我在网上查了一下,并没有找到一个可接受的解决方案来解决这个问题......
我正在寻找一个简单的代码模式:
从单独的 .xib 文件加载 TabBarController 对象(带有关联的 subview Controller ),而不是从默认的 MainWindow.xib 中自动包含和加载。
用 XCode 术语来说,从一个新的 iPad/iPhone 项目作为“标签栏应用程序”开始,目标是解决以下问题:
- 创建项目
- 将:TabBarController、TabBar、FirstViewController 和 SelectedSecondViewController 从 MainWindow.xib 移至新的“TabBarController.xib”文件
- 移动后,MainWindow.xib 应仅包含:文件所有者、第一响应者、应用程序委托(delegate)、窗口
- 在 TabBarController.xib 中,文件所有者和第一响应者分别设置为:UIApplication 和 UIResponder。
- 将主应用程序委托(delegate)中的“didFinishLaunchingWithOptions”更改为以下内容:
删除:
[self.window addSubview:tabBarController.view];
添加:
UITabBarController *uiTab = [[UITabBarController alloc] initWithNibName:@"TabBarController" bundle:nil]; [self.window addSubview:uiTab.view];
通过这些更改,应用程序将构建并运行,但是当 TabBarController 加载时,选项卡栏是“空的”—— Controller 中似乎没有任何内容。
在调试器中查看时,“init”未正确从数据初始化,或者 .xib 文件中的某些内容未正确设置。
正确的解决方案是什么?我意识到还有其他方法可以做到这一点,是的,我让它们在其他应用程序中工作。
但是,我正在寻找是使用默认项目的特定解决方案,可以用作设置 iOS 代码的通用模式。
预先感谢您的帮助
- js
最佳答案
我想我知道你在寻找什么,因为我想要同样的东西。
- 在界面生成器中创建新的空 xib 文件。
- 添加到 xib
TabBarController
从图书馆。 - 在 xib 上的此选项卡栏 Controller 上编辑您需要的任何内容。
- 当然,保存...
确定要从哪个 View Controller 创建带有选项卡栏 Controller 的 xib。换句话说,谁是 View Controller ,将导致此选项卡栏 Controller 出现。
我们将该 View Controller 称为 ParentViewController
在该 View Controller 中,创建一个 IBOutlet
到 TabBarController
.
回到xib,将File's Owner的身份设为ParentViewController
当然,不要忘记将文件所有者中的选项卡栏 Controller 的 socket 连接到 xib 中的选项卡栏 Controller 。
保存 xib,然后就可以开始了。
当您想要显示该选项卡栏时,只需决定要采用哪种方式:模态、弹出或其他方式(不在导航 Controller 内,因为 Apple 不允许选项卡栏 Controller 位于导航 Controller 内)。
当您决定时,只需以呈现任何其他 View Controller 的方式呈现您的选项卡栏 Controller 导出即可。例如:
[self presentModalViewController:self.myTabBarController animated:YES];
关于xcode - 代码模式 : Loading TabBarController objects directly from independent . xib 文件(而不是来自 MainWindow.xib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102785/