我正在开发基于导航的应用程序,我之所以选择它,以便可以在堆栈上下推出控制器。向前推进很容易 - 只需推动一个新的控制器。只要你去根视图控制器,后退很容易。有一个名为popToViewController:animated,
的方法,但我没有在我当前的视图控制器中创建我想要弹出的控制器,因此编译器抱怨我没有声明它。我知道它是堆栈上的第二个控制器(一个在根之上)。我可以用它去那儿吗?
答案 0 :(得分:4)
UINavigationController的viewControllers属性具有viewControllers,以便它们被推送,因此您可以使用它以及您将哪个视图控制器弹出到该视图控制器的知识。这里有一个引用UINavigationController ref
答案 1 :(得分:1)
我通常创建一个NavigationController对象,它知道我的UINavigationController和我的viewControllers。如果你给每个VC一个像这样的对象的引用,或者让它成为一个单例,那么它可以为你处理这样的事情。
在视图控制器中嵌入导航逻辑没有任何问题,但是当它们了解所有其他视图控制器时,它们可能会使它们更难维护。将导航逻辑封装在共享对象中可使您的应用程序更易于理解和维护。
YMMV