2011-08-18 66 views
3

我跟着这个UITabBarController Tutorial创建一个标签栏与主要使用Interface Builder的相应子视图。 UITabBarController在那里创建,Tab的视图控制器也被添加到那里。UITabBarController子视图文件的所有者

我正确的创建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}是不必要的吗?

谁是real文件的所有者 Subviews {WelcomeViewController | AboutViewController} .xib?

请注意,我起初试图在WelcomeViewController.h中创建一个IBAction方法:在WelcomeViewController.xib的Interface Builder中,我可以将按钮按钮连接到它出现在文件所有者处的那个操作。但是在运行时它崩溃了,因为真正的文件所有者可能是而不是 WelcomeViewController.m的对象。我在这里吗? IBAction是否出现在界面生成器(这里是Xcode 4)?

最后一个问题:当我在Interface Builder中像教程中那样连接所有东西时,我还能如何/分离代码(在WelcomeViewController.h中只有在该子视图中发生的IBActions)?

回答

4

我是否正确创建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}是不必要的?

不,两个控制器都是必需的,因为每个全屏窗口至少应该有一个ViewController(并且最好至多)一个ViewController来管理您的视图层次结构。 TabBarController只是一种管理所加载的子控制器显示的“哑”元控制器,因此您需要控制器来切换视图。我会建议你阅读this part of the Apple doc

谁是子视图的真正文件所有者{WelcomeViewController | AboutViewController} .xib?

文件的所有者应该是相应的控制器类(在你的情况,{WelcomeViewController | AboutViewController} {H | M}。) - 当选择文件的所有者可以在检查调色板设置类在Interface Builder 。只有在应用程序启动时打开的第一个窗口(通常称为Main.xib左右)应该将应用程序委托作为文件的所有者。文件的所有者拥有XIB/NIB文件的对象 - 对象引用明智,你知道我的意思:)我认为它应该也可以加载与其他控制器的XIB/NIB文件(和其他控制器自动成为文件所有者),但我不确定。

...我在这里吗? IBAction是否出现在界面生成器(这里是Xcode 4)?

这可能是你在Interface Builder中以错误的方式连接了一个常见的错误。尝试按住Ctrl键,然后将一行从按钮拖到文件所有者上,然后选择所需的链接方法。这应该做到这一点。

最后一个问题:当我像在教程中一样在Interface Builder中连接所有东西时,我仍然可以将代码(在WelcomeViewController.h中有IBActions,仅在此子视图中发生的操作)分离出来?

我想我在第一段回答了这个问题 - WelcomeViewController仍然存在,你所要做的就是创建IBOutlets并在IB中连接它们。当然,您也可以通过编程方式进行接线,因为会员“视图”会自动填充(通过文件所有者连接),并且可以从那里访问所有子视图。

+0

好的,我想我忘了在身份选项卡中设置课程 - 下次必须尝试。所以,基本上,直到现在一个类'UIViewController'的新对象被实例化了,而不是'WelcomeViewController'或'AboutViewController',对吧? – fabb

+0

是的,或者它甚至可能是“NSObject”类型。 – manmal

+0

好吧,它现在可以工作,能够阅读是一个保佑...谢谢! – fabb