如何使用选项卡栏控制器创建一个新的基于nib的iPhone应用程序';s视图作为根视图?

如何使用选项卡栏控制器创建一个新的基于nib的iPhone应用程序';s视图作为根视图?,iphone,ios6,uitabbarcontroller,xcode4.5,Iphone,Ios6,Uitabbarcontroller,Xcode4.5,我试图了解“基于nib的经典”和“基于情节提要”的iPhone开发工作流程之间的区别,以及每种工作流程的编码风格和方法 因此,我使用iOS->Application->SingleView应用程序作为模板,在XCode 4.5中创建了一个新的空iPhone应用程序。我希望了解如何将其转换为一个应用程序,其中选项卡栏控制器作为我的应用程序的根控制器和根视图 我删除了iPhone nib中的空根视图,并试图用TabBarController的视图替换该视图: 在运行时,我收到此异常,应用程序中止:

我试图了解“基于nib的经典”和“基于情节提要”的iPhone开发工作流程之间的区别,以及每种工作流程的编码风格和方法

因此,我使用iOS->Application->SingleView应用程序作为模板,在XCode 4.5中创建了一个新的空iPhone应用程序。我希望了解如何将其转换为一个应用程序,其中选项卡栏控制器作为我的应用程序的根控制器和根视图

我删除了iPhone nib中的空根视图,并试图用TabBarController的视图替换该视图:

在运行时,我收到此异常,应用程序中止:

"A view can only be associated with at most one view controller at a time"
很明显,我在这里违反了一条规则,让一个TabBarController与一个视图关联,然后使该视图也成为文件所有者连接指向的视图是不允许的。那么,通常的惯用方法是什么呢?保留原始的空视图,然后在运行时使tabbarcontroller视图成为子视图?或者其他技术

注意:我不是在要求一个不同的模板选择,也不是在要求如何在涉及故事板的情况下最容易地做到这一点。我问的是如何做到这一点,没有故事板,只有经典的nib,我想了解nib实例化的“stock ui tab controller”对象是如何工作的

更新:我可以通过删除默认模板生成的单视图模板的视图控制器对象来消除错误。现在我有了一个应用程序,链接和运行时有一个黑色的空窗口,没有可见的根视图。我尝试使用界面生成器将IUTabBarController连接到应用程序代理的属性:

@property (strong, nonatomic )IBOutlet UIViewController *viewController; // I added IBOutlet
在我的应用程序代理中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    _window.rootViewController = _viewController;
}
然后我将该插座连接到nib实例化的UITabBarController对象:


在我看来,这本应该奏效的。我可以运行,但我没有根视图。

标题中的问题很容易回答;为基于选项卡的用户界面选择iOS模板,然后取消选中“使用故事板”

然而,上面的基本问题(我在这里试图自行回答)是,如果我取消选中“使用故事板”并选择“选项卡式用户界面”,使用我应该使用的模板,新用户需要理解XCode将生成的样板代码,这足以让我自己编写

我的问题是,我不理解视图控制器类之间的关系以及它们是如何实例化的,我忽略了appcontroller.m文件中的样板代码。我把它拿起来放在面前,但我没有看到它

  • 为每个页面创建视图控制器类

  • Apple演示不直接使用UITabBarController子视图,而是在运行时将其设置为空白nib视图的父视图:

     [self.window addSubview:self.tabs.view];
    
  • 当然,苹果的样本来自iOS 4.0时代

    对于使用tab bar控制器作为根UI小部件的简单应用程序来说,这是一个非常好的示例代码:但是这不是一个完美的示例,因为apple示例在tab bar控制器中的每个页面使用不同的nib,并且需要更多的样板代码,因为它来自iOS 3.0时代

    然而,这个答案并不完美,因为它没有回答“使用当前框架,iOS 6.0/6.1时代的本机和预期习惯用法是什么”的问题。