iPhone 界面生成器和代表

标签 iphone interface-builder

当我制作示例应用程序(即从选项卡栏应用程序或其他应用程序开始)时,在我的 MainWindow.xib 文件中,我看到列出了 5 个项目 - 文件所有者、第一响应者、应用程序委托(delegate)、窗口和选项卡酒吧 Controller 。

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

这对我来说没有意义,我认为这就是为什么我没有那么快地掌握 iPhone 开发的一个重要原因。

有人愿意花时间向我解释一下这个小奇特之处吗?

最佳答案

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

App Delegate 是一个实际的对象。当 xib 加载时它就会启动。正如您在 Interface Builder 中看到的,它连接到文件所有者的委托(delegate)导出。应用程序加载 MainWindow.xib,因此它是文件的所有者。

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

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

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

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

关于iPhone 界面生成器和代表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761814/

相关文章:

ios - 如何在 iphone/iPad 中查看已安装的应用程序选项以打开 pdf 文件?

android - 如何使用 asp.net webservice 创建自定义推送通知?

ios - 如何在 iOS 的小键盘上添加一个 'Done' 按钮

iphone - Interface Builder 中的“非法几何”警告..​​.重要吗?

ios - 我怎样才能让 UIButton 粘在 UIView 的底部

iOS - UIViewControllers 共享一个屏幕

ios - XCode6、iOS8 如何滚动启用大小类的 View Controller 以查看界面生成器中的屏幕外元素?

iphone - 来自不同类的 loadRequest UIWebView

iphone - 在表格 View 单元格中调整图像大小

ios - Interface Builder 以小增量降级 Storyboard、调整大小和重新定位 View