0

我正在尝试制作一个与导航控制器类似的容器视图控制器。当我向堆栈添加一些东西时,我该如何处理已经存在的视图控制器?

它仍然是我的孩子,但我不希望它是视图层次结构中的视图。我是否应该在其上调用 removeFromParentViewController,并在该堆栈中保留一个单独的堆栈?所以当上面的视图被弹出时,我可以检查我应该推回哪个视图以返回到前一个视图。

或者我应该只删除它的视图,而不调用 removeFromParentViewController,然后添加另一个子控制器,并将它的视图添加到容器视图层次结构中?

基本上我该怎么处理不在屏幕上的控制器?

4

1 回答 1

0

“堆栈”只是导航控制器用来跟踪其视图控制器的数组。如果您要构建自己的,则还需要一个数组。导航控制器的工作方式,当一个控制器被推入时,该控制器被添加到数组中,如果一个被弹出,那个控制器被从数组中删除。当你进行转换时,离开屏幕的那个应该调用 removeFromParentViewController,所以它不再在层次结构中(但如果它因为另一个被推送而消失,你会把它留在你的数组中——这就是控制器知道的方式在流行音乐中回到哪个)。您应该使用 transitionFromViewController:toViewController:duration:options:animations:completion: 来进行从一个控制器到下一个控制器的转换。

于 2013-02-11T22:44:00.250 回答