【问题标题】:Problem Loading Initial Nib in iPhone Program在 iPhone 程序中加载初始笔尖的问题
【发布时间】:2011-01-28 04:31:05
【问题描述】:

我遇到了与in this thread 讨论的问题类似的问题,但提供给他的解决方案对我不起作用。对于冗长的描述,我深表歉意,但这是我关于 SO 的第一篇文章,我希望完整。

我有一个在模拟器中运行良好的程序。但是,当我尝试将其推送到设备时,我收到一条错误消息:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/....app> (loaded)' with name 'MainWindow''

所以:它正在尝试加载一个名为 MainWindow 的 XIB,但找不到它。那是因为我没有一个名为 MainWindow 的 XIB;我加载的第一个 XIB 称为 FrontPage.xib。我没有使用其中一个模板启动这个程序,因此一开始没有提供 MainWindow.xib 文件。

Google 机器告诉我可以在我的应用的 plist 中修改主 nib 文件的基本名称。所以,我去那里并将其更改为 FrontPage。现在,我得到一个不同的错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x12c270> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

我在这里拉头发 - 有人知道解决方案吗?

【问题讨论】:

  • 看起来您已经通过 Interface Builder 在 nib 文件中设置了一个“视图”插座,但它的文件所有者没有名为“视图”的实例变量/声明的属性。
  • FrontPage.xib 是控制器 nib 吗?
  • Bavarious:是的,在 Interface Builder 中,我的文件所有者确实有一个名为“视图”的视图的出口。我没有在代码中的任何地方将其声明为属性 - 我需要吗?这就是我对 iOS 编程缺乏经验的地方。 :)
  • 欢迎来到 SO。 SO 政策禁止在帖子中使用称呼,但除此之外,欢迎使用。

标签: iphone ios provisioning


【解决方案1】:

确保您的视图已连接到 Interface Builder 中的“视图”插座。您可以通过右键单击 IB 中的“文件所有者”然后将“视图”出口拖到您的视图来执行此操作。这是我正在制作的游戏的插图。注意蓝线,从右侧的点拖到“视图”。

您需要检查的另一件事是您的 Info.plist。确保您调用了 nib 文件 FrontPage 而不是 *FrontPage****.nib***。

【讨论】:

  • 嗯。我可以理解为什么这会解决我遇到的错误 - 但是,令人困惑的是,视图和文件所有者已经通过您上面显示的过程正确连接。而我的 nib 文件,在 plist 中,没有后缀。另一个奇怪的事情是,直到我尝试将其加载为主要 nib 基础之前,我没有收到此错误 - 在模拟器中,只要我选择了(不存在的)MainWindow 作为我的基础 nib,FrontPage.xib 加载正常.基本笔尖有什么特别之处需要设置在某个地方吗?它是一种特殊的文件类型还是什么?
  • 我不这么认为。最后一个检查我在你的委托中加载笔尖的地方。再次检查是否在此处设置了正确的名称而没有扩展名。
【解决方案2】:

如果 Frontpage.xib 将成为您应用程序的主 xib,那么您必须在该 xib 中创建一个 Window 对象和一个 App Delegate 对象,以便应用程序能够加载。在您开始展示视图控制器之前,您必须配置应用程序和窗口,否则它将按照您的描述崩溃。我建议使用基于 Window 的模板创建一个新项目,然后查看自动创建的 MainWindow.xib 并尝试在 Frontpage.xib 中模仿它。

.. 虽然我只是真诚地建议在您的项目中使用 MainWindow.sib 并使您的 Frontpage.xib 成为普通的视图控制器 xib。如果您选择将新文件添加到您的项目,然后选择用户界面,然后选择应用程序 xib 而不是查看 xib,那么它将为您设置接近您需要的东西。

项目模板很重要也很有用。您应该始终使用它们。我从一个基于窗口的模板开始我的所有工作。它是最基本的模板,也是最灵活的。

【讨论】:

  • 做到了。非常感谢,Kenny - 从应用模板开始学习的经验教训。
【解决方案3】:

如果 FrontPage.xib 的视图控制器通过 IB 设置文件所有者属性正确设置,那么您还需要设置视图属性。您可以通过控制从 Fileowner 拖动到视图来做到这一点。从错误看来,您尚未为视图设置视图属性。在 Interface builder 中打开 nib 并在 connection Inspector 中查找 View Connection,这必须连接到文件所有者的视图出口。您无需在任何地方将其声明为属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2010-12-06
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多