如何使用 prepareForSegue 方法从视图控制器推送到导航视图控制器?
Posted
技术标签:
【中文标题】如何使用 prepareForSegue 方法从视图控制器推送到导航视图控制器?【英文标题】:How to push from view controller to navigation view controller using prepareForSegue method? 【发布时间】:2012-05-14 12:52:40 【问题描述】:我有一个项目,它有一个视图控制器作为初始屏幕,然后是一个嵌入在导航视图控制器中的视图控制器。我在第一个屏幕上还有一个按钮,点击该按钮我希望打开导航控制器屏幕。
我单击按钮,然后单击“连接检查器”,我向该导航控制器添加了推送事件,但没有发生 segue。请问我该如何实现呢?
解决方案
最后经过一番研究,我设法让这件事发挥作用。这是我正在使用的代码:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
NSLog(@"Source Controller = %@", [segue sourceViewController]);
NSLog(@"Destination Controller = %@", [segue destinationViewController]);
NSLog(@"Segue Identifier = %@", [segue identifier]);
if ([segue.identifier isEqualToString:@"mysegue"])
NSLog(@"coming here");
SecondViewController *loginViewController = (SecondViewController *)segue.destinationViewController;
//SecondViewController *navigationController = [[UINavigationController alloc]init];
[self presentModalViewController:loginViewController animated:YES];
【问题讨论】:
【参考方案1】:您确定导航控制器与嵌入式视图控制器的连接设置正确吗?第一个视图控制器应该连接到导航控制器,使用Push
风格的segue,导航控制器应该连接到第二个视图控制器,使用Relationship
风格的segue。
无论如何,Apple 的官方教程之一就是这样做的,因此您可以将您的代码与它进行比较,看看是否有区别:Your Second ios App。 prepareForSegue
方法本身并没有真正参与触发 segue。它只是在 segue 运行之前调用以准备新的视图控制器。
【讨论】:
嗨,保罗,是的,它们都设置正确。我找到了解决方案并编辑了我的答案。非常感谢您的建议。以上是关于如何使用 prepareForSegue 方法从视图控制器推送到导航视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 prepareForSegue 方法中访问对象数组中选定对象的不同属性或属性
Swift:如何在 UICollectionViewCell 中使用“prepareForSegue”?
对 UITableView 使用 didSelectRowAtIndexPath 或 prepareForSegue 方法?