viewDidUnload,viewWillDisappear未在tabBarContoller中调用

时间:2011-07-04 08:44:15

标签: iphone ios xcode cocoa-touch uitabbarcontroller

我正在创建一个基于视图的应用程序,其中第一个控制器是viewcontroller,有登录屏幕,登录后下一个视图是tabbar控制器,我在该tabbar上有2个tabbar项目。 在此之前一切正常。现在,当我在这两个视图之间切换时,viewWillDisappearviewDidUnload不会被点击上一个标签。

P.S.Even没有调用viewwillAppear,我用默认通知调用它。不知道问题是什么。希望我对我的问题很清楚。

3 个答案:

答案 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一样正确设置。