4

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

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

我的案例是使用 swift 项目,无法再从情节提要连接自定义协议委托。

旧版 Xcode 附带的旧连接很好,但我不能再连接任何新委托了。

即使删除连接后,我也无法重新连接旧的。

有没有人出现这种情况??

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

查看课程

@objc public protocol VideoViewResizeDelegate {

    func shouldVideoViewResetLayout(videoView: GvVideoView) -> Bool;

}

@IBOutlet var resizeDelegate: VideoViewResizeDelegate?;

视图控制器类

@IBDesignable public class ViewController: UIViewController, VideoViewResizeDelegate {

...

}
4

2 回答 2

14

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

界面生成器

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

糟透了……

于 2014-10-29T02:35:45.640 回答
8

现在是 2017 年......

使用 swift 3,这将起作用:

open class YourClass: UIView {

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

}

一个前提是:

YourClassDelegate 必须用@objc装饰

例如:

@objc public protocol MyDelegate: class {
    func myFunc()
    func myFunc2()
}

更新

这应该在 Xcode 9 中修复

于 2017-03-22T05:07:12.570 回答