我正在使用Tab bar +基于导航的应用程序,我有4个标签栏。当我从一个视图控制器导航到另一个视图控制器时,viewWillAppear:
方法似乎没有响应,我被迫通过创建下一个视图控制器的对象手动调用它。所以我的问题是,每当我从一个视图控制器导航到另一个视图控制器时,如何避免手动调用viewWillAppear:
方法?相反,它应该自动触发,就像从一个视图控制器导航到另一个视图控制器时触发viewdidLoad:
方法一样。请指导我如何做到这一点。
希望得到最好的答案 在此先感谢
答案 0 :(得分:2)
你是对的,viewWillAppear有点特别,它通常会自动调用,但在某些情况下包括手动添加视图控制器视图(查看addSubview :),以及将其作为视图控制器添加到{ {1}}或UITabBarController
(你们两个都有!)它没有收到消息。
然而,这仅适用于根视图,当您来回导航(可能使用导航控制器)时,根视图的viewWillAppear将被触发为某个点。
简而言之,如果你需要在这些情况下在viewWillAppear中实现某些东西,你应该在知道它将被呈现时自己发信息。您可以在视图控制器中处理这种情况,请查看以下有关此事的文章:
http://www.touchthatfruit.com/viewwillappear-and-viewdidappear-not-being-ca
祝你好运。答案 1 :(得分:0)
在某些具有标签栏控制器的应用中,每个标签还需要一个导航控制器才能添加视图:
[[[_mainTabController topViewController] navigationController] pushViewController:renewalScreen animated:YES];
答案 2 :(得分:0)
您应该检查UITabBarDelegate然后查找方法:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
。
说明:当用户选择标签栏时发送给代理人 项目
答案 3 :(得分:0)
你的意思是标签栏上有4个标签项,而不是'4个标签栏'吗?如果您有一个带标签项的标签栏,则系统会调用viewWillAppear:
方法,因为用户已选中标签。您可能有其他问题导致问题。
答案 4 :(得分:0)
你有没有忘记在某处调用[super viewWillAppear]?
答案 5 :(得分:0)
请尝试使用viewDidAppear方法。