以编程方式切换MVC视图控制器 - iOS

5
我如何在iOS中以编程方式切换视图控制器?
例如,我有一个菜单MVC设置,现在我点击“帮助”,如何以编程方式将其交给帮助视图控制器来加载该MVC设置?
2个回答

5

这是基于View还是Navigation的应用程序?

对于Navigation-based应用程序,您的AppDelegate应该提供访问共享UINavigationController的权限,您可以使用它来推入/弹出UIViewControllers。

[self.navController pushViewController:helpViewController animated:YES]

当用户想要离开帮助视图并返回主屏幕时,您需要将其弹出。这个功能由UINavigationBar中的左/后退按钮自动提供,但您也可以使用popViewcontrollerAnimated选择器手动触发它:

[self.navController popViewControllerAnimated:YES]

对于基于View的应用程序,您可以通过操作子视图来在屏幕之间切换。

[window addSubview:helpViewController.view]

2
虽然基于导航的评论是值得的,但是使用这种方法[window addSubview:helpViewController.view]会让你陷入一系列问题中。我不想再多说了--这里已经涵盖了所有内容(http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/)。 - GarlicFries

1

使用实用程序模板应该是最快的解决方案。 您将拥有两个可以神奇地来回切换的视图。

然而,这些可以通过以下步骤实现

在帮助按钮被触摸时,只需调用

[self presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated];

HelpViewController 上应该有返回按钮

[self dismissModalViewControllerAnimated:(BOOL)animated]; //call to return back to parent view controller

玩得开心^^


如果您想在两个以上的视图之间进行导航怎么办?我有一个包含多个视图但不是线性的应用程序,因此我认为 nav-view 应用程序不太合适。您有什么建议吗? - gonzobrains
选项卡应用程序是以最少的工作量实现您想要的功能的最合适方式。 - Isara Rungvitayakul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接