如何使用标签栏控制器的视图作为根视图创建一个新的基于最小笔尖的iPhone应用程序?

时间:2013-01-25 22:05:48

标签: iphone ios6 uitabbarcontroller xcode4.5

我正在尝试了解基于“经典笔尖”和“故事板”的iPhone开发工作流程之间的差异以及每种工作流程的编码风格和方法。

所以,我在XCode 4.5中使用iOS创建了一个新的空iPhone应用程序 - >申请 - > SingleView应用程序作为我的模板。我希望了解将其转换为使用Tab Bar Controller作为根控制器和应用程序的根视图的应用程序的方法。

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

enter image description here

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

"A view can only be associated with at most one view controller at a time"

很明显,我在这里违反规则,并且使TabBarController与View相关联,然后使该View也成为文件所有者连接指向的视图是不允许的。那么正常的,惯用的方法是什么?保留原始的空视图,然后在运行时使tabbarcontroller视图成为子视图?还是其他一些技术?

注意:我不是要求选择不同的模板,也不是要求如何以最简单的方式执行此操作,如果这种方式涉及故事板。我要求如何做到这一点,没有故事板,只有经典的笔尖,我想了解nib-instantiated的“stock ui tab controller”对象是如何工作的。

更新:我可以通过删除默认的template-generated-single-view-templates'视图控制器对象来消除错误。现在我有一个应用程序链接并运行一个黑色的空窗口,没有可见的根视图。我尝试使用Interface Builder将IUTabBarController连接到app delegate的属性:

@property (strong, nonatomic )IBOutlet UIViewController *viewController; // I added IBOutlet

在我的app delegate中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    _window.rootViewController = _viewController;
}

然后我将该插座连接到nib实例化的UITabBarController对象:

enter image description here

在我看来,这应该有效。我可以跑,但我没有根视图。

1 个答案:

答案 0 :(得分:0)

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

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

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

  1. 为每个页面创建一个视图控制器类。

  2. Apple演示不直接使用UITabBarController子视图,它们在运行时将其显示在空白笔尖视图中:

     [self.window addSubview:self.tabs.view];
    
  3. 苹果样品当然来自iOS 4.0时代。

    优秀的示例代码,用于参考使用标签栏控制器作为根UI小部件的简单应用程序:Apple's Simple FTP Sample但是它不是一个完美的示例,因为apple示例对标签栏中的每个页面使用不同的笔尖控制器,并且需要更多的样板代码,因为它来自iOS 3.0时代。

    然而,这个答案并不完美,因为它没有回答“iOS 6.0 / 6.1时代使用当前框架的原生和预期成语是什么”。