如何从 modalViewController 推送 ViewController

Posted

技术标签:

【中文标题】如何从 modalViewController 推送 ViewController【英文标题】:How to PushViewController From modalViewController 【发布时间】:2013-11-26 12:01:54 【问题描述】:

我有FavouriteViewController,其中我有一个点击按钮的按钮,我正在呈现一个名为LoginViewController(使用情节提要)的视图

在这个页面上(LoginViewController),我再次有按钮,点击我想推动我的视图控制器。

有可能吗?

【问题讨论】:

这会导致不寻常的 UI 体验。但是,如果您想从任何视图控制器推送,则必须将基本视图控制器嵌入到 UINavigationController 中。您可以简单地尝试嵌入您的LoginViewController:在 IB 中选择它,单击编辑器 -> 嵌入 -> 导航控制器。但请先重新考虑您的 UI,因为这看起来不是一个好的解决方案。 【参考方案1】:

您可以尝试以下代码。它可能会帮助您获得所需的解决方案。

1) 通过编写以下代码来呈现LoginViewController

    LoginViewController *login = [[[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil]autorelease];
    UINavigationController *nc = [[[UINavigationController alloc] initWithRootViewController:login]autorelease];
    nc.navigationBar.hidden = YES;
    [self.navigationController presentModalViewController:nc animated:YES];

2) 现在从LoginViewController,您可以按如下方式推送您的MyviewController

    MyviewController *adss = [[[MyviewController alloc]initWithNibName:@"MyviewController" bundle:nil]autorelease];
    [self.navigationController pushViewController:adss animated:YES];

【讨论】:

应用程序显示崩溃:NSInvalidArgumentException', reason: 'Application tried to present modally an active controller 您需要在FavouriteViewController 中编写第一个代码以呈现LoginViewController.. 你也在这样做吗? 屏幕变黑 写完这个CRLoginWithViewController *login = [[CRLoginWithViewController alloc]init]; UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:login]; nc.navigationBar.hidden = YES; [self.navigationController presentViewController:nc animated:YES completion:Nil]; 您没有使用 .xib 文件? 不,我没有使用 .xib 文件,还是同样的问题【参考方案2】:

使用 UINavigationController

 UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.LoginViewController];
 [self presentModalViewController:nav animated:YES];

在此之后,您可以从呈现的视图控制器(LoginViewController)推送任何视图控制器

【讨论】:

这是展示模态视图控制器的方法。 OP 希望从模态呈现的视图控制器中推送视图控制器。 (我认为) 他以模态方式呈现UINavigationController,这是一个可能的答案:) 如果你这么认为,你可以向上回答我的答案:)【参考方案3】:

在这里

[self.parentViewController.navigationController pushViewController:newViewController animated:YES];

【讨论】:

这实际上会将 VC 推送到父级而不是呈现的 VC

以上是关于如何从 modalViewController 推送 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个 modalViewController 退出后更新 modalViewController

从 ModalViewController 更新 splitViewController

从 ModalViewController 返回后没有出现键盘

从 UISplitViewController 呈现的 modalViewController 出现方向错误

modalViewController 从 superview 中移除后 UIView 消失

从后台恢复显示 ModalViewController,避免下面的内容闪烁