我的导航控制器数量不断增长

时间:2014-01-18 01:10:30

标签: ios uinavigationcontroller uistoryboardsegue

我是iOS开发新手,对于Storyboards / Segues / Pushing and Popping并不完全确定。

所以在我的应用程序中,我有一个导航控制器,有5个视图控制器,从一个到另一个。

当它到达最后一个视图控制器时,我有一个第一个的segue,我在prepareForSegue方法中列出了一些任务。

出于好奇,我决定检查[self.navigationController.viewControllers count]会发生什么。我发现它不断增长和成长,并没有“感觉”正确。

我是否正确处理回到第一个屏幕? prepareForSegue方法很有用,因为它允许我将一些数据发送回第一个segue。是否可以说当你回去清除导航控制器上的所有视图时?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用展开segue。这是一个很好的教程:

pragmaticstudio.com/blog/2013/2/5/unwind-segues

确保在将其连接到故事板之前创建展开操作方法,否则当您拖动到“退出”时它不会显示。当我第一次设置时,这对我来说是最令人困惑的部分。本教程以正确的顺序进行,所以如果你遵循它就应该没问题。

此外,这是我放在一起展示如何在展开segue中传回数据的示例。它使用模态呈现的视图控制器,但技术是相同的:

github.com/soleares/AddToTableView

答案 1 :(得分:0)

不,你永远不应该用segue(除了放松)后退。 Segues总是实例化新的控制器,所以你实际上并没有回到第一个控制器,你只是创建一个新的实例,它被添加到堆栈中。所以要么回到unwind segue或使用popToViewController:animated:。使用展开segue将允许您使用prepareForSegue,它确实会导致其间的所有控制器被释放(如果您没有其他强指针)。