所以我写了一个简单的协议:

protocol PopupMessageType{
    var cancelButton: UIButton {get set}
    func cancel()
}

并有一个customView:
class XYZMessageView: UIView, PopupMessageType {
...
}

然后我现在有:
class PopUpViewController: UIViewController {

    //code...

    var messageView : CCPopupMessageView!
    private func setupUI(){
    view.addSubview(messageView)

    }

}

但是我想做的是:
class PopUpViewController: UIViewController {

    //code...

    var messageView : PopupMessageType!
    private func setupUI(){
    view.addSubview(messageView) // ERROR

    }

}

错误我得到:

无法转换类型为'PopupMessageType!'的值。预期的论点
输入“UIView”

编辑:
我正在使用Swift 2.3!

最佳答案

将属性 messageView 的类型更改为(UIView&PopupMessageType)!

我的意思是

class PopUpViewController: UIViewController {

    //code...

    var messageView : (UIView & PopupMessageType)!
    private func setupUI(){
    view.addSubview(messageView) // ERROR

    }

}

关于ios - 如何将协议(protocol)类型添加为 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46653085/

10-12 14:59