错误在Xcode 6 – 视图控制器没有名为(子视图)的sockets
我刚刚在我的一个应用程序中遇到了这个错误,在检查了一些其他应用程序之后,也出现了同样的错误。 我的IBOutlets
和IBActions
都没有连接了。 当我通过控制拖入.h文件重新创buildsockets时,sockets仍然在Connections Inspector> Outlets中显示错误,并说(视图控制器)没有名为(subview)的sockets。 在今天之前,我没有这个问题,那么与Xcode 6呢? 视图控制器正在引用Identity Inspector> Custom Class下的正确类。 我删除了派生的数据文件夹,删除了对.h文件的引用,清理了项目,并清除了构build文件夹。 这一切都没有奏效,在这个问题得到解决之前,我无法继续发展。
更新:几天后,我刚刚重新打开了项目,我的店铺旁边不再有惊叹号,我断开的“easyLabel”sockets又重新出现了。 我没有改变任何东西,所以我猜这是Xcode 6-6.1中的一个bug。
更新2:这个错误回来了。 每个sockets旁边都有感叹号。 如果我删除它们,我不能重新添加它们。 无法创build新的网点。 也不能给视图控制器一个自定义的类。 我真的只想在应用程序上取得一些进展,但这个问题不断重演。 真的再也忍受不了了。 任何帮助,将不胜感激。
重复: XCode 6:不能连接任何IBOutlet到ViewController,但这里的诀窍是:
您还可以看到,父视图和自定义类之间的链接被破坏(不再可见),这是一个巨大的问题。
我和我正在处理的应用程序有完全相同的问题,将XCode从5.xxx更新到6.1。 解决这个问题的办法是删除每个视图控制器的引用,并将它们重新添加到项目中。不幸的是,在某些情况下,实际上,当XCodeclosures时,所有连接都会再次丢失。
面对这个问题的每个人,这都是(烦人的)把戏:
- 第1步:select.h和.m视图控制器文件
- 第2步:删除这些文件的引用
- 第3步:重新将文件添加到您的项目树
- 第4步:打开故事板,最终重build项目和微笑
我可以理解这些事情可能会令人厌烦,但它对我来说很有效…希望它能帮助别人!
我有完全相同的问题,什么是打破我的故事板是事实,我的项目是在文件夹/ Dropbox(MyName)/ projects /
显然,有关空格和()的保pipe箱文件夹的名称是完全崩溃我的故事板,尝试我做了什么,并将您的项目完全移动到另一个文件夹,看看是否有帮助:)
我遇到了同样的问题,将Inspector> Custom Class下的类更改为其他types,将其保存并重新设置为正确的类后,连接正常显示。
我有一个Swift UIViewController子类的这个问题。 我删除了IB为我创build的原始视图,并添加了一个新的视图 – 我无法连接。
我去了文件所有者的身份检查员,并试图重新input它,认为它可能已被修改。 奇怪的是,类名没有自动完成。 XCode似乎无法真正看到我的课程。
我试图删除并重新添加.swift
和.swift
文件,无济于事。 XCode将允许我手动input自己的类名,但不会自动完成。 似乎认为它不存在,或在这方面是无效的。
回头看我的代码,我有如下的东西:
extension SomeViewController { func foo() -> Bool { return false } } class SomeViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } }
它编译得很好,但在预感,我删除了扩展名。 我保存了文件,回到了.xib
文件,并且能够再次使用自动完成function设置文件的所有者身份。 我也能够把这个观点联系起来。
如果扩展程序总是会破坏某些东西,那就太糟糕了,所以我又试了一次,这次是扩展后的扩展:
class SomeViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } } extension SomeViewController { func foo() -> Bool { return false } }
一切仍然在IB工作。 为了理智检查,我把这个扩展名移回到class级定义的前面,然后再把这些东西放在一边。
我看了XCode生成的* -Swift.h,至less相对于受影响的类,似乎没有什么区别,不pipe我把扩展名放在Swift文件中的位置,它们总是在@interface
定义为头中的实际类。
所以,长话短说,在我的情况下,这是由于Swift扩展(我说扩展,因为我的实际代码有很多)在类定义之前。 在class级定义之后,我把他们移开了,问题就消失了。
对我来说,我不得不删除引用,并添加到我的项目-XIB-我的视图控制器的文件。 只是删除视图控制器.h / .m没有重置网点,但删除.xib并将其添加回来!
如果我不在实现类中重新定义它们,我只有在使用@protocol
定义的IBOutlets
时才会@protocol
这个问题。
可能我们唯一能做的就是提交一个bug 。
为什么不更新你的Xcode 6.0.1到Xcode 6.1,苹果已经修复了很多错误。
下载Xcode 6
如果连接Interface Builder中的操作/sockets而不是辅助编辑器,是否会遇到同样的问题? 对于动作,尝试控制从IB中的对象拖动到第一个响应者对象(或任何你有你的类设置)。
实际上@robb发现了这个问题的解决方法,但是他发现的问题是,镜像磁盘上文件夹的项目组使用了不同的情况。
所以如果项目组是Broken / classone.m
并在磁盘上被打破/ classone.m
界面生成器找不到文件。 重命名组或文件夹以匹配案例解决了这个问题。
自从使用XCode 6.1以来,我遇到了同样的问题,上面的答案对我来说不起作用。 (删除/重新添加我的类文件,将类更改为其他东西,然后将其更改回来。唯一没有尝试的是从头创build一个新的项目。
我意外地注意到,我在MainMenu.xib中的'Application'占位符以某种方式将它的类设置为NSObject。 将其改为NSApplication似乎清除了“我的所有其他对象都没有名为”的问题。
Xcode 6.3.2。 类似的问题。 我一直在研究的项目突然“断开”IBOutlets并显示错误
view controller does not have an outlet named (subview)
该项目仍然build设和工作,如果你hover在代码IBOutlets它认为仍然连接。
我已经确定了这一点(至less在我的情况下)存储在Dropbox项目(类似于上面的post)的问题。 对我来说修复是非常容易的:
将项目文件夹从保存箱拖到桌面上。 然后将项目拖回到保pipe箱中。
这个解决scheme已经解决了许多项目的问题。
大约两个月前,我从Xcode 6.x更新到Xcode 7.x,没有任何问题。 但今天早上我遇到了这个bug。 我尝试了几乎所有的东西,但没有任何工作。 但贾斯汀·米德尔顿的解决scheme给了我一个主意。
当我将项目从10.9 SDK切换到10.11 SDK时,我决定要我的代码保持向后兼容,以防万一我不得不恢复到Xcode 6.2。 所以我把预处理器代码放在我的几个对象声明中,例如:
// This caused the (!) problem in Interface Builder #if( MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_10 ) @interface CLChatWindowController : NSObject <WebPolicyDelegate, WebUIDelegate, WebFrameLoadDelegate> #else @interface CLChatWindowController : NSObject #endif ... // Removing all the Preprocessor code fixed the problem @interface CLChatWindowController : NSObject <WebPolicyDelegate, WebUIDelegate, WebFrameLoadDelegate> ....
一旦我删除了所有预处理器代码,Interface Builder中的(!)字符就消失了,一切都恢复正常了。 希望能帮助别人。
我在Xcode 7.0.1中使用了一个快速项目。 具体来说,桌面单元连接被打破(永久),而其他事情仍然奏效。 删除派生的数据,重新启动等 – 没有任何工作。
我的解决scheme最终是:
- closuresxcode项目
- 删除项目的导出数据(“窗口” – >“项目”)
- 重命名整个项目/源文件夹,即。 项目 – >项目1
- (根据需要更新sourcetree等源代码pipe理书签)
- 在xcode中打开项目(来自finder):注意故事板和其他一些文件是红色的。 删除引用,重新添加它们。 繁荣,它的作品。
请注意,删除对故事板的引用并读取它,即使删除了派生数据也是不够的。 整个源文件夹的重命名对我来说是必要的。