簡體   English   中英

參數中的Swift Complex類型

[英]Swift Complex type in parameter

為了更清楚一點,我正在尋找一種解決方案,供用戶傳遞帶有特定子類和協議的類,即,一個繼承viewController和委托協議的類。 我知道可以創建協議列表,但是找不到正確運行的解決方案。 目前,我使用初始化程序並將viewcontroller用作參數,並在函數內檢查委托,但我希望可以在參數中使用這些類型。

編輯:希望做與此類似的事情

Protocol prot:Delegate{}

class cla:ViewController{}

class impl{
      init(mainUI: cla, prot){
         do things
       }
}

That way back in the main view controller I can do something like this

class viewController: cla, prot{

     var view:impl  

     override func loadView() {
        //Attach to Screen
        view = impl(mainUI: self);
    }

}

他們還有更多的事情發生,但這是唯一真正相關的部分。 當前,如果類未繼承正確的協議,我將使用初始化程序來使其失敗

您可以創建一個虛擬類型來代表您的需求。 Typealias在這種情況下不起作用,但這可能是:

class DummyClass: MyViewController, MyDelegateProtocol {}

func needsRequiredClass(input: DummyClass) {...}

MyViewControllerMyDelegateProtocol是您提到的超類和委托。 DummyClass將有一個空的實現。

然后,使您的特定類成為DummyClass子類:

class TestClass: DummyClass {...}

您可以通過該新課程:

let test = TestClass()
self.needsRequiredClass(test)

您問錯了問題。 換句話說,嘗試嚴重設計錯誤。

視圖應該知道,它的代表是一個UIViewController或一個子類。

委托應該是遵守(采用)特定委托協議的任何類。

視圖僅應委派特定的職責。 這些責任中的每一項都必須由協議方法或屬性來描述。

如果您更詳細地說明問題(為什么您認為需要直接訪問UIView中的UIViewController的整個定義),我們可以幫助您避免此錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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