我正在尝试了解基于“经典笔尖”和“故事板”的iPhone开发工作流程之间的差异以及每种工作流程的编码风格和方法。
所以,我在XCode 4.5中使用iOS创建了一个新的空iPhone应用程序 - >申请 - > SingleView应用程序作为我的模板。我希望了解将其转换为使用Tab Bar Controller作为根控制器和应用程序的根视图的应用程序的方法。
我删除了iPhone笔尖中的空根视图,并试图用TabBarController的视图替换该视图:
在运行时,我收到此异常并且应用程序中止:
"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对象:
在我看来,这应该有效。我可以跑,但我没有根视图。
答案 0 :(得分:0)
标题中的问题很容易回答;选择基于选项卡的用户界面的iOS模板,然后取消选中“使用故事板”。
然而,我在这里尝试自我回答的基本问题是,如果我取消选中“使用故事板”并选择“选项卡式用户界面”,新用户将需要了解XCode将生成的样板代码,使用我应该使用的模板,足以自己编写。
我的问题是我不理解视图控制器类的关系以及它们是如何实例化的,我忽略了appcontroller.m文件中的样板代码。我把它放在我面前然而我却没有看到它。
为每个页面创建一个视图控制器类。
Apple演示不直接使用UITabBarController子视图,它们在运行时将其显示在空白笔尖视图中:
[self.window addSubview:self.tabs.view];
苹果样品当然来自iOS 4.0时代。
优秀的示例代码,用于参考使用标签栏控制器作为根UI小部件的简单应用程序:Apple's Simple FTP Sample但是它不是一个完美的示例,因为apple示例对标签栏中的每个页面使用不同的笔尖控制器,并且需要更多的样板代码,因为它来自iOS 3.0时代。