【发布时间】:2016-11-07 21:00:48
【问题描述】:
我有符合两种不同协议的自定义 UIView (CustomView)
protocol ResizableDelegate: class {
func view(view:UIView, didChangeHeight difference:CGFloat)
}
protocol Resizable: class {
var delegate:ResizableDelegate? { set get }
}
protocol TappableDelegate: class {
func viewDidTap(view:UIView)
}
protocol Tappable {
var delegate:TappableDelegate? { set get }
}
我需要在我的CustomView 类中有一个名为delegate 的属性,并同时符合这两个协议。我读了Types conforming to multiple protocols in swift,但这并没有解决我的问题。
我创建了这个协议
protocol CustomViewDelegate: ResizableDelegate, TappableDelegate {}
然后让我的CustomView
class CustomView : UIView, Resizable, Tappable {
var delegate:CustomViewDelegate?
}
但这导致我收到一条消息
Type 'CustomView' does not conform to protocol 'Resizable'
我不想拥有:
class CustomView : UIView, Resizable, Tappable {
var resizableDelegate:ResizableDelegate?
var TappableDelegate:TappableDelegate?
}
有没有什么办法两个只有一个委托属性同时符合这两个协议?我使用的是 swift 2.0,Xcode 7。
【问题讨论】:
-
关于“符合多种协议的类型”答案的“这不能解决我的问题”是什么意思。如前所述,这看起来正是您问题的解决方案。
-
我的类需要同时符合
Resizable和Tappable,并且两个协议都有一个名为delegate的属性,应该符合不同的协议。
标签: ios swift swift-protocols