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

Posted

技术标签:

【中文标题】以编程方式切换 MVC 视图控制器 - iOS【英文标题】:Programmatically switching MVC view controllers - iOS 【发布时间】:2011-05-09 20:30:49 【问题描述】:

如何在 ios 中以编程方式切换视图控制器?

示例 - 我有一个菜单 MVC 设置,现在我单击“帮助”如何以编程方式将其交给帮助视图控制器以加载该 MVC 设置?

【问题讨论】:

【参考方案1】:

这是基于视图还是基于导航的应用程序?

对于基于导航的应用程序,您的 AppDelegate 应该为您提供对共享 UINavigationController 的访问权限,您可以使用它来推送/弹出 UIViewControllers

[self.navController pushViewController:helpViewController animated:YES]

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

[self.navController popViewControllerAnimated:YES]

对于基于视图的应用程序,您可以通过操作子视图在屏幕之间移动

[window addSubview:helpViewController.view]

【讨论】:

虽然基于导航的 cmets 是值得的,但您可以使用以下方法打开自己的问题世界:[window addSubview:helpViewController.view]。我不会对此大加赘述——这一切都已被报道过here。【参考方案2】:

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

但是,这些可以通过以下步骤来实现

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

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

HelpViewController 上应该有返回按钮

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

玩得开心^^

【讨论】:

如果您想在两个以上的视图之间导航怎么办?我有一个有很多视图但不是线性的应用程序,所以我认为导航视图应用程序不合适。有什么建议吗? 标签栏应用程序是做你想做的事情的最合适的方式(用最少的努力)。

以上是关于以编程方式切换 MVC 视图控制器 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中单击以编程方式切换到 TableViewCell 上的导航视图

以编程方式从模态视图控制器切换父选项卡

以编程方式切换子视图控制器:XLPagerTabStrip

如何在视图控制器中以编程方式切换视图? (Xcode,iPhone)

以编程方式切换视图

以编程方式切换选项卡时清除根视图控制器的变量