无法从Xcode 6.1中的故事板连接自定义协议委托

Pat*_*Lin 3 interface-builder swift xcode6 ios8 xcode6.1

我刚刚将我的mac升级到10.10,将Xcode升级到6.1,

发现一个关于故事板的奇怪的事情,

我的情况是使用swift项目,无法再从storyboard连接自定义协议委托.

老版Xcode附带的旧连接很好,但我再也无法连接任何新的代理了.

一旦我移除了连接,我甚至无法重新连接旧的.

有没有人出现这种情况?

==============================更新=================== ===========

查看课程

@objc public protocol VideoViewResizeDelegate {

    func shouldVideoViewResetLayout(videoView: GvVideoView) -> Bool;

}

@IBOutlet var resizeDelegate: VideoViewResizeDelegate?;
Run Code Online (Sandbox Code Playgroud)

ViewController类

@IBDesignable public class ViewController: UIViewController, VideoViewResizeDelegate {

...

}
Run Code Online (Sandbox Code Playgroud)

Pat*_*Lin 13

https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051

Interface Builder

当插座的类型是协议时,Interface Builder不支持连接到Swift文件中的插座.将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回协议.(17023935)

这很糟糕......

  • 而在2017年......情况仍然如此.我不知道他们要去的所有这些@ Apple.Swift编译器花费大量时间来编译一些简单的语句,增量编译错误导致重建所有文件以进行小的更改,编译器崩溃,不一致的编译器错误消息,接口构建器问题以及Xcode中的ZERO重构支持.是的,这真的是苹果相关的一切语言的未来...... (3认同)

Yil*_* He 6

这是2017年....

使用swift 3,这将工作:

open class YourClass: UIView {

    #if TARGET_INTERFACE_BUILDER
    @IBOutlet open weak var delegate: AnyObject?
    #else
    open weak var delegate: YourClassDelegate?
    #endif

}
Run Code Online (Sandbox Code Playgroud)

一个先决条件是:

YourClassDelegate必须用@objc修饰

例如:

@objc public protocol MyDelegate: class {
    func myFunc()
    func myFunc2()
}
Run Code Online (Sandbox Code Playgroud)

更新

这应该在Xcode 9中修复