gpt4 book ai didi

ios - 从 XIB 加载 UITabBarController 不包含来自 XIB 的任何内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:03 25 4
gpt4 key购买 nike

我正在开发一个项目,该项目最初是基于 TabBarController 的应用程序,现在大部分仍然是,但是一些要求已经改变,我们需要放入一个初始 View Controller 作为应用程序其余部分的入口点- 在提供身份验证并加载一些内容后,将在主窗口中由选项卡栏 Controller 替换。

原来的 UITabBarController 是 MainWindow.xib 的一个组件,它的所有根导航 Controller 都设置了 Root View Controller ,一切都很顺利。我想我可以简单地从 MainWindow.xib 中提取 UITabBarController 组件,将它放在自己的 CustomTabBarController.xib 中,然后运行 ​​

[self setTabBarController:[[[UITabBarController alloc] initWithNibName:@"CustomTabBarController" bundle:nil] autorelease]];
[_tabBarController setDelegate:self];
[self.window addSubview:_tabBarController.view];

但是,我得到的不是预建的标签栏 Controller ,而是一个完全空的标签栏 Controller 。

我错过了什么吗?为什么我不能从 nib 加载预构建的 UITabBarController?

最佳答案

试试这个:

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"CustomTabBarController" owner:nil options:nil];
UITabBarController *controller = [nibContents objectAtIndex:0];

[self setTabBarController:controller];
[_tabBarController setDelegate:self];
[self.window addSubview:_tabBarController.view];

解释原因有点棘手,但这与文件所有者的工作方式有关。如果在 nib 文件中定义了标签栏 Controller ,则无法将 nib 文件加载到标签栏 Controller 中。

Nib 总是必须由比 nib 中定义的对象高一级的对象加载 - 因此应用程序委托(delegate)可以加载 View Controller , View Controller 可以加载 View 等。但是 View Controller (包括 TabBarController ) 无法自行加载。

关于ios - 从 XIB 加载 UITabBarController 不包含来自 XIB 的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com