在点击UITabBar时未调用的子视图控制器的viewDidDisappear

时间:2015-12-09 04:48:53

标签: ios objective-c uinavigationcontroller uitabbarcontroller

我有一个UITabBarController的应用程序和一些UINavigationViewController附带的应用程序。假设在UITabBarController的第一个标签上,用户导航到控制器A,然后导航到B,然后导航到C,因此创建了一堆UINavigationControllerA -> B -> C

我需要在A,B和C的viewDidDisappear:中执行某些操作。如果用户点击后退按钮从C -> B -> A开始,则调用B和C的viewDidDisappear:。但是,如果用户点击UITabBar的{​​{1}},则会直接从UITabBarController开始,只调用C -> A的C,跳过B。

如果我使用自定义viewDidDisappear:子类并在UITabBarController中返回NO,则此行为将不再存在,但我不想这样做,用户将拥有多次按“返回”按钮进入根视图控制器。有没有办法解决这个问题,但保持tabBarController:shouldSelectViewController:的行为?

2 个答案:

答案 0 :(得分:0)

确保将底栏保留为无(在视图控制器B和C中),如下所示。 这将隐藏那些视图控制器的底栏,用户将无法直接从Viewcontroller C导航到Viewcontroller A. 用户需要使用后退按钮导航从C。中查看控制器A.

这将解决您调用viewDidDisappear的问题。

enter image description here

答案 1 :(得分:0)

当b-> c时,调用了viewDidDisappear方法,当c-> a时,该方法不能再被调用。如果你想要b做某事,你应该保持一个a或c中b的弱参考对象。希望能解决你的问题。