在过去一两周的某个时间里,Xcode 7 beta(当时的beta 5,现在仍处于beta 6)中的Storyboard编辑器停止识别我的部分(并非全部)UIViewController子类中的IBOutlets。 (注意:我的应用程序是一个纯粹的Swift 2,针对iOS 9的项目。)
具体来说,它无法“看到”源文件位于项目的(特定于应用程序的)主文件夹中的VC中的IBOutlet,但可以看到我保存在“外部”中的(通用的,非特定于应用程序的)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。同时,“外部”下的VC模块确实具有灰色的“当前-IIAM”。
因此,似乎很明显的潜在问题是,故事板编辑器(可能还有Xcode)通常无法将我特定于应用程序的VC存储在特定于应用程序的“ IIAM”文件夹(该文件夹位于应用程序的IIAM下)中,顺便说一句,AppDelegate以及几乎所有的类和资源也都位于此位置),但是当它们从该文件夹中移出时会显示。
我检查了目标的构建设置,以确认指定了我的所有VC(外部和特定于应用程序)。我甚至检查了情节提要文件的XML,看是否可以发现在其中指定和标识VC的方式上的任何区别,而且我确实注意到了一件事:那些被IBOutlet识别的VC全部具有属性:
customModule="IIAM" customModuleProvider="target"
而(至少大多数)无法识别IBOutlet的用户缺少customModuleProvider =“ target”属性。但是,即使在我编辑情节提要文件以为所有VC设置该属性后,情节提要编辑器stil仍无法将它们识别为属于我的应用程序模块,也无法识别其IBOutlets。我试过清理,重建,核对所有Xcode首选项和派生数据,重新安装Xcode,但是除了将VC移至项目目录的顶层之外,没有任何区别。
(请注意,如果我通过从情节提要中进行控制拖动来在源中手动添加(或替换)IBOutlets,则我的应用仍然可以正常运行;但是即使我这样做,所有此类IBOutlets也会显示为情节提要编辑器无法识别,并且黄色的小警告图标。当然,我必须以这种方式手动添加所有IBOutlet,即使是用于视图的对象也是如此,然后我必须立即将其从VC源中删除,因为它与继承的view属性冲突,但是这至少会显示黄色警告IBOutlet,然后让该应用运行)
所以,我完全不知所措。还有其他人遇到过这种行为吗?有谁知道我怎么能解决这个问题?
救命!谢谢!
卡尔
最佳答案
好的,我不知道这是否真的是一个“答案”,但我至少能够解决该问题。我在便携式计算机(这是我的主要开发计算机)上看到了上面报告的问题,但同时我也在将项目文件同步到台式机Mac。今天早上,我将台式机Mac更新到最新的Xcode beta,并从那里启动了我的项目。正如我希望的那样,在那台Mac上,情节提要编辑器“看到”了我的VC及其IBOutlets。更好的是,在再次用笔记本电脑同步文件后,现在在笔记本电脑上一切也正常。因此,该问题已得到解决,尽管我对发生的事情并没有真正的解释,也没有确定的程序。
关于swift - Xcode 7 beta(5和6)看不到某些VC的IBOutlet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32208597/