XCode 6.1 (6A1052d) 上未显示 IBOutlets

Posted

技术标签:

【中文标题】XCode 6.1 (6A1052d) 上未显示 IBOutlets【英文标题】:IBOutlets not showing on XCode 6.1 (6A1052d) 【发布时间】:2014-11-16 12:41:43 【问题描述】:

这是一个相当大的问题:奥特莱斯没有出现在 IB 中。

复制:

1) 我将一个变量声明为 IBOutlet,例如在我的视图控制器的 .h 文件中

@property (nonatomic, strong) IBOutlet UILabel* testlabel;

2) 我打开故事板,点击视图控制器。 - 如果这是一个新项目,则没有“Outlets”列表。 - 如果这是一个已经定义了 outlet 的旧项目,“Outlets”列表包含以前的 outlet,但不是我添加的那个。

有没有人遇到过同样的问题。这非常重要,因为除非我停止使用 Outlets,否则我基本上无法继续。我在发行说明中找不到任何有关它的信息。

编辑我正在 youtube 上添加一个视频来显示问题,以防我没有正确解释它。如果我忘记了一些明显的事情,我很高兴被嘲笑 :) 就是说,我一直在遵循这些相同的行为,而奥特莱斯一直在列表中。

编辑 2 为清楚起见,我删除了 ivar 声明,因为它似乎得到了大部分关注。

Outlets on Youtube

编辑 3 好的,我似乎遇到了以前在 this question 和 this other question 上看到的问题。基本上,如果我打开自定义类下拉菜单,我只会看到一些“标准”类,例如 UIViewController。如果我选择其中任何一个,我就会得到奥特莱斯。例如,对于 UIViewController,我总是拥有那个 view->View。但是,我的项目的类不在下拉列表中。手动输入名称似乎可行,但实际上并非如此。一定有一些索引问题(除了我已经从

中删除了所有内容
~/Library/Developer/Xcode/DerivedData/

没有成功。如果您想尝试,我已将我的代码放在GitHub 上。这并没有为我显示奥特莱斯,但它为许多其他人显示 - 所以严格来说这不是代码的“错误”。这更像是一个 XCode 问题。欢迎任何帮助!

编辑 4 我认为问题出在此处:看右边。下拉菜单不显示“ViewController.h”类。如果我手动输入它,它似乎可以识别它,但实际上我怀疑它没有。以前,我总是在下拉菜单中看到我的项目类的完整列表。

【问题讨论】:

那是伊瓦尔。这是之前属性的方式,如果您不想合成 ivar,它仍然有效。 代码的 ivar 部分实际上并不重要。问题是该属性是一个未显示在列表中的 IBOutlet 蚂蚁。我添加了一个视频以使问题更清楚。 你能用 Xcode 6.1.1 的 beta 种子试试吗? @MattGibson 我正在下载它 :) 我希望能解决问题。但即使是这样,关于如何“刷新”列表的好奇心仍然存在...... @MattGibson 6.1.1 也有同样的问题。我开始有点绝望了…… 【参考方案1】:

我找到了一个“解决方案”或解决方法。删除 XCode 数据是不够的,仅仅重新启动它是不够的。以下顺序使奥特莱斯神奇地重新出现并正常工作:

    清理项目 关闭 XCode 删除~/Library/Developer/Xcode/DerivedData/的所有内容 重启 MacOs

通过这样做,当您重新打开 XCode 并重新索引时,它将按预期显示网点。

【讨论】:

这是唯一对我有用的解决方案。您必须完全按照 4 个步骤操作。 只是为了任何人阅读:一个可能的“愚蠢问题”就是这样:每个类名/文件名是否正确?我曾多次复制一个类,但未能正确命名类/文件。 (所以,我有两个“CarCells”,缺少一个“BoatCell”,等等。)如果你这样做,这里讨论的问题正是出现在情节提要中。希望它可以帮助别人!【参考方案2】:

只需像这样声明IBOutlet

@property (nonatomic, strong) IBOutlet UILabel* testlabel

【讨论】:

是的 - 抱歉,我没有在这里写我的代码中的内容。我会编辑。 所以,重申一下:我有将变量声明为 IBOutlet 的属性,与您的示例完全相同。我也有 ivar 声明。现在:对于我的旧网点(我今天之前声明的网点),当我专注于视图控制器时,我在情节提要的“奥特莱斯”列表中有一个相应的条目; "testlabel 没有出现。 顺便说一句,我已经编辑了问题并添加了指向视频的链接,以显示问题所在。很高兴被告知我在做一些根本错误的事情:)【参考方案3】:

可能是一个非常愚蠢的方法,但是您是否尝试过Clean Project Folder然后删除 DerivedData(在 Storyboard 未打开时),立即退出 Xcode,然后再次打开 Xcode,然后构建您的项目?

【讨论】:

【参考方案4】:

我遇到了类似的问题,但这是由于 Xcode (8.2) 中的一个错误,如果这些插座已使用 _Nullable 类型注释声明以实现 Swift 兼容性,Interface Builder 不会在连接检查器中显示插座.

在@property 的括号内使用nullable 似乎可以解决该问题。

(我知道原始发帖者的问题没有使用类型注释或 Xcode 8,所以略有不同,但问题摘要与我的互联网搜索相匹配,因此我向未来的搜索者提及这一点。)

【讨论】:

以上是关于XCode 6.1 (6A1052d) 上未显示 IBOutlets的主要内容,如果未能解决你的问题,请参考以下文章

Xcode,UITableView 上未显示按钮(基本级别)

Xcode Playground 7.1.1 上未显示控制台

iOS 11 上未显示导航栏标题和导航按钮

Xcode 6.1 的 segue 动作列表中没有“显示”

iOS 设备 XCODE8 上未发生调试

Xcode 6.1 - 地图视图在 iOS7 模拟器或 iPhone 4 中显示为空白