UITabbar在app start上加载2个视图,而不是仅在第一个视图上加载

时间:2011-05-10 12:41:10

标签: iphone uitabbar

我有一个带4个按钮的uitabbar。启动屏幕会在应用程序启动时加载。 2个按钮视图在启动时不加载(良好)。 1是web视图,另一个是具有表视图的导航控制器。最后一个视图会在应用程序启动时加载。它是另一个带有表视图的导航控制器。

我知道哪些正在加载,哪些不是因为我将nslog添加到所有顶级控制器上的didload函数。

所以总的问题是,当我启动我的应用程序,然后旋转它,然后进入已经加载了tableview的标题栏项目,这是一个webview,从来没有得到它应该旋转的备忘录,并因此调整大小。如果您在视图中来回旋转,那么它就可以正常工作。它只是最初的时间。

更新1: 问题是如何在应用程序启动时加载标签栏另一个按钮上的第二个控制器。

更新2: 我在didload中执行所有初始化的东西,但我尝试添加以下代码,但它从未显示在日志中。我没有使用IB,这是以编程方式完成的:

    - (void)loadView
    {
        NSLog(@"Loading feedback");
    }

更新3: 我想出了什么造成这种情况。我有一个xib,里面有我的tabbarcontroller。在那个tabbarcontroller我有一个导航控制器,然后我有一个视图控制器(我将类设置为我的反馈类),然后我有导航项和表视图。当我添加tableview时,它会触发控制器加载。只需删除它将阻止它早期加载。然后为了修复它,我为反馈创建了一个xib。所以我不喜欢让服务器具有单一目的的nib,在这种情况下,它可以在那里获得一个表视图并使其成为一个分组的样式。我可能会尝试手动添加tableview,而不是使用tableview控制器。

2 个答案:

答案 0 :(得分:1)

在代码中更容易做到。标签栏控制器接受数组中的视图控制器,默认标签栏控制器位于标签栏控制器的第一个索引处。

      UITabBarController *tabBarController = [UITabBarController alloc] init];
      tabBarController.viewControllers=[NSArray arrayWithObjects:firstViewConoller,secondViewController,nil];
       [self.view addSubview : tabBarController.view];

将所有与视图相关的任务放在viewDidLoad方法中有时loadView gies问题这可能是因为你的viewController试图加载一个又一次调用自身的新视图,所以最好将它们添加到viewDidLoad。

答案 1 :(得分:0)

过早加载的选项卡的视图控制器可能会在需要之前访问self.view属性。

如果发现接入点很难添加断点到loadView,则只需要调用[super loadView]虚拟过载(视图从NIB加载)。断点堆栈跟踪将显示强制加载发生的位置。