Interface Builder 是如何知道 UIViewController 的视图的?
Posted
技术标签:
【中文标题】Interface Builder 是如何知道 UIViewController 的视图的?【英文标题】:How does Interface Builder know about UIViewController's view? 【发布时间】:2009-08-14 15:03:50 【问题描述】:UIViewController 有一个名为 view
的 ivar(和 @property)。然而,它不是 IBOutlet。
在 Interface Builder 中创建视图 nib 时,通常将 File's Owner 设置为 UIViewController(或其子类),并将 nib 的视图连接到 File's Owner 的 view
插座。
如果 UIViewController 视图成员不是 IBOutlet,这将如何工作?
【问题讨论】:
【参考方案1】:IBOutlet 关键字用于指示应在 Interface Builder 中显示您编写的类的属性。 Interface Builder 内部对系统提供的类有额外的了解。
如果您在桌面而不是 iPhone 上使用 Interface Builder,您可以编写 Interface Builder 插件以将您的自定义类集成到 Interface Builder 库中(这在 iPhone 的 Interface Builder 中不受支持)。在编写插件时,插件作者提供“类描述”文件,这些文件向 Interface Builder 声明相同的操作/出口信息,就像使用 IBAction/IBOutlet 关键字实现的一样。您可以在Interface Builder Plug-In Programming Guide 中了解更多信息。
它对系统提供的类的工作方式与对插件的工作方式基本相同。
【讨论】:
【参考方案2】:我不久前阅读了this article,它终于为我将它们联系在一起了。也许对你有帮助?
【讨论】:
【参考方案3】:简单的答案是 Apple 编写了 Interface Builder 和 UIViewController
。
【讨论】:
【参考方案4】:UIViewController 的视图属性就是这样,一个属性。 UIViewController 的全部目的是控制视图。 view 属性允许您将该视图分配给 UIViewController。这就是视图的目的,也是它出现在 IB 中的原因。这是一个财产。就像 textLabel 是 UILabel 的一个属性一样。
【讨论】:
blackColor 是 UIColor 上的类方法,而不是属性!问题不在于 view 属性的用途,而是为什么 IB 将其视为一个出口,尽管该属性上没有 IBOutlet 声明。 添加了另一个属性示例。 textLabel 仍然不是 UILabel 的属性。这不是这个问题的意义所在。我确实了解属性,而不是 UIViewController 的视图在 IB 中的处理方式不同。但我想我现在找到了答案。以上是关于Interface Builder 是如何知道 UIViewController 的视图的?的主要内容,如果未能解决你的问题,请参考以下文章