【问题标题】:iPhone Interface Builder and DelegatesiPhone 界面生成器和代表
【发布时间】:2009-04-17 19:18:30
【问题描述】:

当我制作一个示例应用程序(即,从一个标签栏应用程序或其他东西开始)时,在我的 MainWindow.xib 文件中,我看到列出了 5 个项目——文件的所有者、第一响应者、应用程序代表、窗口和选项卡酒吧控制器。

如果我创建另一个 .xib 文件,并为其创建一个委托,并将该文件的所有者设置为我刚刚创建的新委托,我在...对象列表中看不到“NewDelegateFile”(?)对于那个 .xib。

这对我来说没有意义,我认为这也是我没有这么快赶上 iPhone 开发的重要原因。

有人愿意花时间向我解释一下这个小怪癖吗?

【问题讨论】:

标签: iphone interface-builder


【解决方案1】:

文件的所有者不是 xib 文件中的真实对象。它是一个代理对象。它表示加载时将成为 xib 所有者的对象。 First Responder 和 App Delegate 也是代理。第一个响应者是当前位于响应者链顶部的对象。当应用程序的状态发生变化时,另一个对象可能是第一响应者。您可以使用此代理对象将 File->Save 菜单之类的内容连接到在任何给定时间负责处理它的任何对象。

App Delegate 是一个实际的对象。加载 xib 时,它会自动恢复。正如您在 Interface Builder 中看到的,它连接到文件所有者的委托出口。应用程序加载 MainWindow.xib,它是文件的所有者。

其他 xib 文件通常通过委托对象加载。该委托对象是文件的所有者。但是委托本身是从代码中实例化的。它不是从 xib 加载的。这就是它没有显示在 Interface Builder 中的原因。

xib 文件包含实际的序列化对象。文件的所有者和第一响应者是例外。它们代表其他一些已经存在的对象。

文件的所有者(通常是非 MainWindow.xib 文件中的 UIViewDelgate)是鸡。 xib是鸡蛋。鸡本身不包含在鸡蛋中。

有点长。希望对您有所帮助。

【讨论】:

  • 我没有忽略这个答案。我花了几天的时间反复玩耍和阅读才能理解它。我想我知道了,现在。非常感谢。这与我的想法应该如何有点不一致,但我会继续让我的头脑尝试这样思考。非常感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多