Jos*_*ach 2 cocoa-touch interface-builder uitabbarcontroller ios
我正在开发一个基于TabBarController的应用程序开始的项目,但仍然主要是,但是一些要求已经改变,我们需要将初始视图控制器作为应用程序其余部分的入口点 - 一个在给出认证并加载一些东西后,将在主窗口中由标签栏控制器替换.
最初的UITabBarController是MainWindow.xib的一个组件,它的所有根导航控制器都设置了根视图控制器,一切都很顺利.我想我可以简单地从MainWindow.xib中提取UITabBarController组件,将它放在自己的CustomTabBarController.xib中,然后运行
[self setTabBarController:[[[UITabBarController alloc] initWithNibName:@"CustomTabBarController" bundle:nil] autorelease]];
[_tabBarController setDelegate:self];
[self.window addSubview:_tabBarController.view];
Run Code Online (Sandbox Code Playgroud)
但是,我没有获得预期的预制标签栏控制器,而是获得了一个完全空的标签栏控制器.
我错过了什么吗?为什么我不能从笔尖加载预先构建的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];
Run Code Online (Sandbox Code Playgroud)
解释原因有点棘手,但这与文件所有者的工作方式有关.如果在nib文件中定义了选项卡栏控制器,则无法将nib文件加载到选项卡栏控制器中.
Nib总是必须由nib中定义的对象上方一个对象加载 - 因此app委托可以加载视图控制器,视图控制器可以加载视图等.但是视图控制器(包括TabBarController)可以'加载自己.
| 归档时间: |
|
| 查看次数: |
3145 次 |
| 最近记录: |