我正在创建一个基于视图的应用程序,其中第一个控制器是viewcontroller,有登录屏幕,登录后下一个视图是tabbar控制器,我在该tabbar上有2个tabbar项目。
在此之前一切正常。现在,当我在这两个视图之间切换时,viewWillDisappear
,viewDidUnload
不会被点击上一个标签。
P.S.Even没有调用viewwillAppear,我用默认通知调用它。不知道问题是什么。希望我对我的问题很清楚。
答案 0 :(得分:8)
首先,在UITabBarController中切换视图时,不会调用viewDidUnload
函数,因为视图实际上没有被卸载。所以,这是正常的。
开箱即用的内容是viewWillAppear
/ viewDidDisappear
。但是有一个问题!
根据您显示视图的方式,框架可能不会为您调用viewWillAppear
/ viewDidDisappear
。例如,如果您将视图添加为子视图,则会发生这种情况,但有更多情况。我不知道你如何展示你的标签栏,所以不能说出更具体的内容。
我建议修复此问题的简单解决方案是覆盖标签栏控制器委托中的tabBarController:didSelectViewController:
选择器。从那里,您可以实现自己的逻辑或致电viewDidDisappear
。
答案 1 :(得分:1)
您应该将TabBar控制器放在MainWindow.xib中。
首先,当您显示loginscreen时,您将添加如下所示的RootViewController:
[self.window addSubview:self.rootview.view];
登录完成后,您可以从主窗口中删除RootViewController,并在主窗口中添加TabBarController,如下所示:
[self.rootview.view removeFromSuperview];
[self.window addSubview:self.tabBarController.view];
答案 2 :(得分:0)
你有UINavigationController吗?你没有提到一个。如果您没有使用UINavigationController,那么很可能您的UITabBarController没有像topViewController一样正确设置。