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

时间:2014-10-28 08:16:21

标签: swift ios8 interface-builder xcode6 xcode6.1

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

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

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

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

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

有没有人出现这种情况?

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

  

查看课程

@objc public protocol VideoViewResizeDelegate {

    func shouldVideoViewResetLayout(videoView: GvVideoView) -> Bool;

}

@IBOutlet var resizeDelegate: VideoViewResizeDelegate?;
  

ViewController类

@IBDesignable public class ViewController: UIViewController, VideoViewResizeDelegate {

...

}

2 个答案:

答案 0 :(得分: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)

太糟糕了......

答案 1 :(得分: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

}

前提条件是:

YourClassDelegate必须使用 @objc

进行修饰

例如:

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

更新

这应该在Xcode 9中修复