当以编程方式调用segue时,NavBar不会出现

时间:2014-10-31 18:33:50

标签: ios objective-c iphone xcode segue

我有一个包含3个视图的iOS应用。我正在使用“推送segue”在它们之间移动。我已将第一个视图中按钮的推送链接链接到第二个视图。从第二个到第三个,我没有按钮。我有一个项目列表,该人可以点击其中任何一个以移动到第三(和最后)视图。所以我在故事板中添加了一个segue并以编程方式调用它。第三个视图正常打开,但导航栏不再存在。

    [self performSegueWithIdentifier: @"moveToFilesSegue" sender: self];

我可以在没有导航栏的情况下生活。但真正的问题是,我不能从第三种观点到任何其他观点进行推动。

所以我的问题是是否有办法从第二个视图到第三个视图调用segue,这样第三个视图也有默认情况下前两个视图的导航控制器(即导航栏在第三个视图中也可见Segue公司)。由于我以编程方式调用segue,因此导航中断了一些。

1 个答案:

答案 0 :(得分:1)

所以一些评论。如果您希望能够在任何时间点从任何视图访问其他两个视图,那么我建议使用标签栏控制器而不是导航控制器。

如果必须使用导航控制器,则应将第一个视图控制器保留为根视图控制器。想象一下,然后点击一个按钮,推动第二个视图控制器。然后说你点击一个按钮从第二个到达第三个视图控制器。你应该做的是从第二个执行展开segue然后立即执行segue到第三个。默认情况下,动画会有点不受欢迎,因为它可能会显示弹出和推动,但是像对待条一样对待它,你可以在弹出和推动时禁用动画。

要实现,请在第一个视图控制器中保留一个int变量(顺便说一下..如果需要,也可以通过在导航控制器中保留int来实现)。在viewDidAppear中,检查int变量。如果= = 1则推送第二个视图控制器。如果= = 2,则按下第三个视图控制器。否则,不要做任何事情。当在第二个视图控制器中按下按钮以查看第三个视图时,展开第二个视图控制器,但在prepareForSegue中,将目标视图控制器中的int变量设置为2。因此,当第一个视图控制器出现时,它将立即推送第三个视图控制器。

我知道这有点烦人,但你并不想在不松开的情况下一遍又一遍地推动相同的视图控制器。