Xcode 的 Interface Builder 中的外部对象占位符丢失

Posted

技术标签:

【中文标题】Xcode 的 Interface Builder 中的外部对象占位符丢失【英文标题】:External Object placeholders in Xcode's Interface Builder are missing 【发布时间】:2013-10-27 17:26:58 【问题描述】:

如果我没记错的话,以前可以在界面生成器中将外部对象占位符添加到 NIB。这用于添加对 NIB 未创建但需要由 Interface Builder 中的其他对象引用的对象的现有实例的引用。类似于“文件的所有者”和应用程序对象。

我还发现在较早的 SO 问题中提到了这种技术,例如 here

我在 Mavericks 上使用 Xcode 5.0.1,并且在界面生成器中没有这些“外部对象”的痕迹。似乎无法再向占位符添加任何内容。从 Xcode 4.0 开始,我经历了Xcode's release notes,并没有提到这个被删除(尽管很少提到拖动占位符,不管这意味着什么)。

那么,知道这是不是故意删除的?一个错误?是否有任何解决方法或替代此功能?

【问题讨论】:

【参考方案1】:

打开已经使用外部对象的项目,你会在界面生成器中找到“外部对象”。所以我猜外部对象可能已被弃用,默认情况下不会出现。

对于另一种方法,您可以改用“对象”。

【讨论】:

你不能用“对象”代替。这些不是一回事。占位符只是连接到现有实例的一种方式,因此您可以从 Interface Builder 访问它。添加“对象”时,将在加载 NIB 时创建该类的实例。我需要从 Interface Builder 连接到单例,所以“对象”不起作用。 @danilev 外部对象已在 xcode 5.1 中重新添加,如果您没有注意到这一点,则只是剩余部分。 (创建一个.xib,然后搜索'object'你会看到它) @danielv 你用故事板吗?如果是这样创建一个 .xib 文件,您会找到它。故事板是ios初始化的,不能使用外部对象,不能传递任何外部对象。 没有故事板。我创建了一个新的 (Mac) 项目,并在打开新创建的 xib 的情况下对其进行了搜索。 Yes... 查找 sdk,对于 NSNib,- (BOOL)instantiateWithOwner:(id)owner topLevelObjects:(NSArray **)topLevelObjects,对于 UINib,--instantiateWithOwner:options: (通过选项中的外部对象)。我认为 mac 项目只是不支持外部对象。

以上是关于Xcode 的 Interface Builder 中的外部对象占位符丢失的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.2 Interface Builder Dock 图标

XCode Interface builder缺少视图层次结构

编辑情节提要时 Xcode Interface Builder 崩溃

如何防止 Xcode/Interface Builder 自动向下移动视图?

xcode Interface Builder 未更新 IBDesignable 类

Xcode 8 属性“隐藏”不会在 Interface Builder 中隐藏视图