如何从子视图导航到其他视图控制器?

Posted

技术标签:

【中文标题】如何从子视图导航到其他视图控制器?【英文标题】:How to navigate from subview to other view controller? 【发布时间】:2014-06-18 15:00:35 【问题描述】:

假设我有一个名为 MainPage(这是 rootViewController)的视图控制器。 在那个视图控制器中,我添加了一个子视图。

见下文:

FirstPage1=[[FirstPage alloc] initWithNibName:@"FirstPage" bundle:[NSBundle mainBundle]];
[self.view addSubview:FirstPage1.view];

在那个子视图中,我需要导航到下一页。

所以我像下面的代码一样使用了presentViewController,但效果不佳。

见下面的代码:

[self.view.window.rootViewController presentViewController:AnotherViewController animated:YES completion:nil];

第一次效果很好,但如果我下次调用,我得到以下错误。

错误: 其视图不在窗口层次结构中!

【问题讨论】:

为什么要将FirstPage1 的视图添加到自身?已经有自己的view了,再添加自己的view就没有意义了…… 【参考方案1】:

将单独的视图控制器链接在一起是UINavigationController 的一个很好的用途。只需创建一个UINavigationController 并将其视图添加到您的示例中的 self.view 即可。然后,根据需要为每个视图执行[navController pushViewController: animated:]。或者弹出最后一个视图控制器,如果您不想访问旧页面,则推送新的视图控制器。从您的项目的设置方式来看,这是最简单的方法。

【讨论】:

感谢您的回复! 在我的项目中,我将 ViewController(FirstPage) 添加为 ViewController(MainPage) 的子视图。我需要知道如何从子视图导航到其他视图。我已经尝试添加 presentViewController 来导航其他一些视图控制器。但它适用于第一个周期。如果我下次这样做,我会收到以下错误。”其视图不在窗口层次结构中!” 如果你只是将它作为一个视图添加到另一个视图中,你将不得不手动处理视图。将您的 MainPage 改为 UINavigationController !然后您可以像我所说的那样推送/弹出,而不是自己管理视图。

以上是关于如何从子视图导航到其他视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 从子视图访问导航控制器

从子视图 UIViewcontroller 到其他 UIViewController

如何在目标 c 中从其他子视图控制器导航子视图控制器

如何将选项卡栏添加到默认视图并使用导航控制器与其他视图通信

如何使用导航栏项转到其他视图控制器?

从子视图访问属性到 ViewController Swift