所以我写了一个简单的协议:
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!
3条答案
按热度按时间w6lpcovy1#
将属性类型消息视图更改为**(UI视图和弹出消息类型)!**
我的意思是
neskvpey2#
在Swift 4中,您可以执行以下操作:
然后使用
PopupMessageViewType
作为变量的类型。suzh9iv83#
免责声明:我已经没有swift 2.3编译器了,因为swift 4是iOS开发的新标准。下面的代码可能需要调整才能在swift 2.3中运行
实际上,我们将创建一个2x1多路复用器,其中两个输入是同一个对象。输出取决于您是否设置多路复用器选择第一个或第二个。
1)我为ObjectPopupMessageTypeProtocolMux的初始化器输入了两次“inputView”。它们是相同的类示例,但它们被强制转换为不同的类型。
我希望这能帮助你在swift 2.3中达到你想达到的目标