Не удается подключить делегат пользовательского протокола из раскадровки в Xcode 6.1


Я только что обновил свой mac до 10.10 и Xcode до 6.1,

Нашел странную вещь, которая о раскадровке,

В моем случае используется проект swift, больше не удается подключить делегат пользовательского протокола из раскадровки.

Старый connected, который поставляется со старой версией Xcode, в порядке, но я больше не могу подключить новый делегат.

Даже я не могу снова подключить старый, как только я удалил подключенный.

У кого-нибудь возникает такая ситуация ??

============================== Обновлено ==============================

Класс Представления

@objc public protocol VideoViewResizeDelegate {

    func shouldVideoViewResetLayout(videoView: GvVideoView) -> Bool;

}

@IBOutlet var resizeDelegate: VideoViewResizeDelegate?;

Класс ViewController

@IBDesignable public class ViewController: UIViewController, VideoViewResizeDelegate {

...

}
2 3

2 ответа:

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

Конструктор Интерфейсов

Interface Builder не поддерживает подключение к розетке в Swift файл, если тип розетки-протокол. Объявите тип розетки как AnyObject или NSObject, подключите объекты к розетке с помощью Построитель интерфейса, затем измените тип розетки обратно на протокол. (17023935)

Это отстой...

Сейчас 2017 год....

Используя swift 3, это будет работать:

open class YourClass: UIView {

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

}

A предварительное условие :

Ваш Classdelegate должен быть украшен @objc

Например:

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

Обновление

Это должно быть исправлено в Xcode 9