Xcode 7 beta (5 & 6) 看不到某些 VC 的 IBOutlets
Posted
技术标签:
【中文标题】Xcode 7 beta (5 & 6) 看不到某些 VC 的 IBOutlets【英文标题】:Xcode 7 beta (5 & 6) cannot see IBOutlets of some VCs 【发布时间】:2015-08-25 15:54:27 【问题描述】:在过去一两周的某个时候,Xcode 7 beta(当时是 beta 5,现在仍然是 beta 6)中的 Storyboard 编辑器停止识别我的 UIViewController 一些(不是全部)中的 IBOutlets子类。 (注意:我的应用程序是一个纯 Swift 2、ios 9 目标项目。)
具体来说,它无法“看到”VC 中的 IBOutlets,其源文件位于我的项目(特定于应用程序的)主文件夹中,但它可以在(通用的、非特定于应用程序的) 我保存在“外部”文件夹中的 VC。更重要的是,如果我将那些特定于应用程序的 VC 移出主文件夹,Storyboard 编辑器会很好地看到它们的 IBOutlets:
<Project Folder>
IIAM.xcodeproj <-- Project
Externals <-- Where I keep non-app-specific code and resources
Classes
Views <-- The Storyboard Editor sees the IBOutlets of all these files just fine
IIAM <-- All app-specific code and resources
Classes
Views <-- The Storyboard Editor doesn't recognize any IBOutlets of these files
但如果我将受影响的视图移出 IIAM 文件夹:
<Project Folder>
IIAM.xcodeproj <-- Project
Externals <-- Where I keep non-app-specific code and resources
Classes
Views <-- The Storyboard Editor sees the IBOutlets of all these files just fine
IIAM <-- All app-specific code and resources
Classes
Views <-- The Storyboard Editor _does_ recognize IBOutlets these files when moved out here!
在情节提要编辑器中,所有无法识别的类的“模块”属性为空(注意:它没有默认的灰显“Current - IIAM”,它只是灰显"None" ) — 即使我将模块名称设置为我的项目的名称,IBOutlets 仍然无法识别。同时,“Externals”下的VC模块确实有灰色的“Current - IIAM”。
因此,潜在的问题似乎很明显,即当我的应用程序特定的 VC 存储在我的应用程序特定的“IIAM”下时,Storyboard Editor(通常可能还有 Xcode)无法将它们识别为属于应用程序的模块文件夹(顺便说一句,AppDelegate 以及几乎所有的类和资源也都位于该文件夹中),但是当它们被移出该文件夹时。
我检查了我的目标的构建设置,以确认我的所有 VC(外部和特定于应用程序)都已指定。我什至检查了我的故事板文件的 XML,看看我是否可以发现其中 VC 的指定和识别方式有什么不同,我确实注意到一件事:那些 IBOutlets 被识别的 VC 都有属性:
customModule="IIAM" customModuleProvider="target"
而(至少大多数)那些无法识别 IBOutlets 的人缺少 customModuleProvider="target" 属性。但即使在我编辑了故事板文件以为我的所有 VC 设置该属性之后,故事板编辑器仍然无法将它们识别为属于我的应用程序的模块,或者识别它们的 IBOutlets。我已经尝试清理、重建、删除所有 Xcode 首选项和派生数据、重新安装 Xcode,但除了将我的 VC 移动到项目目录的顶层之外,没有任何区别。
(请注意,我的应用程序仍然可以正常执行,如果我通过从情节提要中拖动控件来手动添加(或替换)我的源代码中的 IBOutlets;但即使我这样做了,所有此类 IBOutlets 都会显示故事板编辑器无法识别,带有黄色的小警告图标。当然,我必须以这种方式手动添加 all IBOutlets,即使是那些用于视图之类的东西 - 然后我必须立即从 VC 源中删除,因为它当然与继承的视图属性冲突,但这确实至少会显示一个黄色警告 IBOutlet,然后让应用程序运行)
所以,我完全不知所措。有没有其他人遇到过这种行为?有谁知道我该如何解决这个问题?
帮助!谢谢!
卡尔
【问题讨论】:
一些进一步的信息:认为可能故事板编辑器被其路径中有两个名为“Views”的文件夹(即使在不同的目录中)弄糊涂了,我尝试重命名好的,我不知道这是否真的是一个“答案”,但我至少能够纠正这个问题。我在笔记本电脑上看到了上面报告的问题,这是我的主要开发机器,但我也在将我的项目文件同步到我的桌面 Mac。今天早上,我将我的桌面 Mac 更新到了最新的 Xcode 测试版,并从那里启动了我的项目;正如我所希望的那样,在那台 Mac 上,故事板编辑器“看到”我的 VC 和他们的 IBOutlets 就好了。更好的是,在与我的笔记本电脑再次同步文件后,我的笔记本电脑现在一切正常。所以,这个问题已经解决了,虽然我真的没有解释发生了什么,或者如果它再次发生,我没有确定的程序可以遵循。
【讨论】:
以上是关于Xcode 7 beta (5 & 6) 看不到某些 VC 的 IBOutlets的主要内容,如果未能解决你的问题,请参考以下文章
更新到 Xcode 7 Beta 5 并收到此错误:失败,退出代码 6
Xcode 6 + iOS 8 SDK 但部署在 iOS 7 (UIWebKit & WKWebKit)
使用 Xcode6-Beta 运行 Xcode 5.1.1 项目
XCode 7 (Beta 3 & 4) 无法下载和安装 iOS 8.* 模拟器