簡體   English   中英

如何使現有的類成員成為協議實現?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM