我正在尝试了解“基于经典 nib”和“基于故事板”的 iPhone 开发工作流程之间的区别,以及它们各自的编码风格和方法。
因此,我在 XCode 4.5 中创建了一个新的空 iPhone 应用程序,使用 iOS -> Application -> SingleView Application 作为我的模板。我希望了解如何将其转换为以标签栏控制器作为根控制器和我的应用程序的根视图的应用程序。
我删除了 iPhone 笔尖中的空根视图,并尝试用 TabBarController 的视图替换该视图:
在运行时,我得到这个异常并且应用程序中止:
"A view can only be associated with at most one view controller at a time"
很明显,我在这里违反了一条规则,并且不允许将 TabBarController 与 View 关联,然后使该 View 也成为 File's Owner 连接指向的视图。那么执行此操作的正常惯用方法是什么?把原来的空视图留在原地,然后在运行时让tabbarcontroller视图变成一个子视图?还是其他什么技术?
注意:我不是要求选择不同的模板,也不是如果这种方式涉及故事板,如何最容易地做到这一点。我在问如何做到这一点,没有故事板,只有经典的笔尖,我想了解笔尖实例化的“股票 ui 选项卡控制器”对象如何工作。
更新:我可以通过摆脱默认的模板生成单视图模板的视图控制器对象来摆脱错误。现在我有一个应用程序,它链接和运行一个黑色的空窗口,没有可见的根视图。我尝试使用 Interface Builder 将 IUTabBarController 连接到应用程序委托的属性:
@property (strong, nonatomic )IBOutlet UIViewController *viewController; // I added IBOutlet
在我的应用委托中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_window.rootViewController = _viewController;
}
然后我将该插座连接到 nib 实例化的 UITabBarController 对象:
在我看来,这应该奏效。我可以运行,但我没有根视图。