[英]How can I make an existing class member be a protocol implementation?
我的問題很簡單。 我有一個類來管理我所有的視圖控制器到視圖控制器的過渡動畫,並且它從協議中獲取類,因為我想使其具有可移植性,並且通常使baseviewcontroller帶有項目特定的東西。
該協議是這樣的:
protocol AnimatedViewController {
var view: UIView { get set }
func animateViews()
}
但是,當我讓UIViewController
繼承時,會收到未定義view
錯誤。 當我定義它時,它告訴我它已經定義了。
如何在協議中定義view
,並將其設為UIViewController
已定義的view
?
PS:真的不知道如何命名標題,因此歡迎進行編輯。
您可以在協議中使用where子句,並且不需要view
屬性。
protocol AnimatedViewController where Self:UIViewController {
func animateViews()
}
class TVC : UIViewController, AnimatedViewController {
func animateViews() {
}
}
UIViewController
中的view
是強制展開的UIView
,因此只需將協議定義為:
protocol AnimatedViewController {
var view: UIView! { get set }
func animateViews()
}
UIViewController
view
將用於滿足該協議的要求。
例如:
class MyController: UIViewController, AnimatedViewController {
func animateViews() {
// do your stuff
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.