【发布时间】:2015-12-09 04:48:52
【问题描述】:
我有一个附有UITabBarController 和一些UINavigationViewControllers 的应用程序。假设在UITabBarController 的第一个选项卡上,用户导航到视图控制器 A,然后是 B,然后是 C,因此创建了一个堆栈 UINavigationController:A -> B -> C。
我需要在 A、B 和 C 的 viewDidDisappear: 中做一些事情。如果用户点击后退按钮从 C -> B -> A 转到,则调用 B 和 C 的 viewDidDisappear:。但是如果用户点击UITabBarController中的第一个UITabBar,他们会直接从C -> A开始,并且只调用C的viewDidDisappear:,跳过B。
如果我使用我的自定义UITabBarController 子类并在tabBarController:shouldSelectViewController: 中返回NO,这种行为将不再存在,但我不想这样做,用户将不得不多次按下返回按钮才能去到根视图控制器。有什么办法可以解决这个问题,但要保持UITabBarController 的行为?
【问题讨论】:
-
您必须重新排列您的代码,使其不依赖于
viewDidDisappear。该方法未被可靠地调用(即在您可能期望的每种情况下调用),这只是一个示例。顺便说一句,没有在 B 上调用它的原因是因为当您推送 C 时,B 的视图不在层次结构中。如果您自己弹出到根控制器,您会看到相同的行为。
标签: ios objective-c uinavigationcontroller uitabbarcontroller