标签应用程序中的视图控制器的附加NIB

时间:2011-12-22 12:31:19

标签: ios xcode cocoa-touch interface-builder

{Xcode 4.2,部署目标iOS4.3,而非故事板,使用ARC}

我开始使用标签式应用程序模板&选择了通用平台,很好地给了我视图控制器类和& iPhone的NIB文件( ClassName_iPhone.xib )&用于2个选项卡的iPad( ClassName_iPad.xib ),在AppDelegate中使用if语句来确定要运行的语句 - 确切地说我想要它如何设置。

我想添加第3个&第4个选项卡,所以从第3个选项卡开始(一次执行1个)我创建了一个新的UIViewController子类。因为它没有同时创建两个NIB的选项,所以我选择了“Targeted for iPad”,&曾打算手动创建iPhone NIB。我在创建的NIB文件中添加了一个“_iPad”后缀,然后我创建了一个用户界面视图NIB文件,我在其中添加了“_iPhone”后缀。然后,我在AppDelegate实现文件中为新视图控制器设置代码,以包含第3个视图控制器&标签,&我使用其他视图控制器类作为设置新类代码的指南。

对于第3个_iPhone NIB,我将一个视图对象从对象库拖到画布上,&按照其他2个_iPhone NIB设置它。但是当我去连接插座时,在连接面板的参考插座中没有可以连接的视图插座,我认为应该有。在这一点上,我怀疑出了什么问题。

enter image description here

我尝试在模拟器中运行它,在iPad模式下它工作正常(所有3个标签都可点击)。但是在iPhone模式下,单击第3个选项卡会在第1个线程上使用“SIGABRT”将其崩溃。很明显,我所做的并不起作用。我没有在输出窗口中看到任何提供任何线索的内容。

作为obj-c的新手,所以不要太确定问题,我会想到我要么:

  • 使用了错误的用户界面模板(查看)
  • 应该使用对象库中的视图控制器对象 (不是观点)
  • 或者我应该在我的视图控制器中声明一些插座 类文件。

但如果我应该完成后两者中的任何一个,那么我的问题就是为什么iPad NIB会起作用,当它明显在NIB&中有一个视图对象时。在类文件中没有声明出口(与两个设备的其他2个视图控制器相同)?

UITabView类是否以某种方式在前两个标签中预先声明了出口?但这仍然无法解释_iPad NIB的工作原理。

像往常一样,任何帮助&建议非常感谢,&如果我错过了某个地方的解释链接,请告诉我,因为我很乐意做研究。

如果我在这里做错了是不可确定的,那么我想最终我要问的是如何最好地创建iPhone的第二个NIB文件以与使用iPad NIB创建的类进行网格化。

1 个答案:

答案 0 :(得分:0)

很抱歉回答我自己的问题,但通过进一步搜索,我发现this答案是解决方案,尽管不是全部。所以我想把我所做的事情放在asnwer中,以便其他人可以参考它。

enter image description here

正如Piotr Czapla在链接答案中解释的那样,由于某种原因,Xcode没有填充connectionRecords数据,正如您可以通过我的第一个红色箭头看到的那样。看看有效的视图控制器(其中第二个红色箭头是),这就是数据应该是什么样子。所以答案是削减数据和将其粘贴到NIB文件中,或键入它。您可以通过右键单击项目导航中的NIB文件来在Xcode中执行此操作。然后打开为>源代码,这是我在截图中看到的。

我想要添加到Piotr Czapla的解释中的位是第二个红色箭头指向的目标引用可能不适合您正在粘贴的NIB文件(我的不是)& Xcode可能不会让你回到IB模式。如果是这样,您需要从NIB文件中的IBUIView类获取正确的引用,如第三个红色箭头所示。一旦我将该引用复制到我的目的地引用ref =,如第四个红色箭头所示,一切都没问题&问题解决了。然后我可以回到IB模式(右击,Open As> Interface Builder - iOS)&视图在模拟器中有效。