我遵循了这个UITabBarController Tutorial,它主要使用Interface Builder创建带有相应子视图的选项卡栏。在此处创建UITabBarController,并在其中也添加选项卡的视图控制器。
我是否正确,不需要创建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}?
谁是子视图{WelcomeViewController | AboutViewController} .xib的真实文件的所有者?
请注意,我起初尝试在WelcomeViewController.h中创建IBAction方法:在WelcomeViewController.xib的Interface Builder中,我可以将按钮的按下按钮连接到该操作出现在File Owner上。但是在运行时它崩溃了,因为实际文件的所有者大概是而不是的WelcomeViewController.m对象。我在这里吗? IBAction出现在Interface Builder(此处为Xcode 4)中是否是一个错误?
最后一个问题:当我像本教程中那样在Interface Builder中连接所有内容时,如何/仍可以分离代码(在WelcomeViewController.h中具有IBAction,仅在该子视图上发生操作)?
最佳答案
我是否正确,不需要创建UIViewControllers {WelcomeViewController | AboutViewController}。{h | m}?
不,两个控制器都是必需的,因为每个全屏窗口至少(最好是最多)有一个ViewController来管理视图层次结构。 TabBarController只是一种“哑”元控制器,用于管理其加载的子控制器的显示-因此,您需要用于切换视图的控制器。我建议您阅读this part of the Apple doc。
谁是子视图{WelcomeViewController | AboutViewController} .xib的真正文件所有者?
文件的所有者应为相应的控制器类(在您的情况下为{WelcomeViewController | AboutViewController}。{h | m})-您可以在选择文件的所有者时在检查器面板的Interface Builder中设置该类。只有在应用程序启动时打开的第一个窗口(通常称为Main.xib左右)才应将应用程序委托作为文件的所有者。文件的所有者拥有XIB / NIB文件的对象-明智的对象引用,您知道我的意思:)我认为也可以将XIB / NIB文件与其他控制器一起加载(并且其他控制器自动成为文件的所有者),但我不确定。
我在这里吗? IBAction出现在Interface Builder(此处为Xcode 4)中是否是一个错误?
可能是您在Interface Builder中以错误的方式连接了操作,这是一个常见错误。尝试按住Ctrl键,然后将按钮上的一行拖到“文件的所有者”上,然后选择所需的链接方法。那应该做。
最后一个问题:当我像本教程中那样在Interface Builder中连接所有内容时,如何/仍可以分离代码(在WelcomeViewController.h中具有IBAction,仅在该子视图上发生操作)?
我想我在第一段中回答了这个问题-WelcomeViewController仍然存在,您要做的就是创建IBOutlet并将它们连接到IB中。当然,您也可以通过编程方式进行接线,因为成员“视图”是自动填充的(通过“文件的所有者”连接),并且所有子视图都可以从那里访问。
关于ios - UITabBarController subview 的文件所有者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7105454/