如何使用 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 方法中访问对象数组中选定对象的不同属性或属性

使用 prepareForSegue 设置方法值

从视图表中获取数据时出现 Laravel 错误

Swift:如何在 UICollectionViewCell 中使用“prepareForSegue”?

对 UITableView 使用 didSelectRowAtIndexPath 或 prepareForSegue 方法?

UITableViewControllers 上的 prepareforSegue 方法