如何从 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 出现方向错误