簡體   English   中英

Swift協議委托返回nil

[英]Swift Protocol Delegate return nil

protocol testDelegate: class {
    func open(channel: String, vc: UIViewController)
}

class test: UIViewController{

    weak var delegate: testDelegate?
}
override func viewDidLoad() {
        super.viewDidLoad()
        if self.delegate != nil {
        print("hello")
        self.delegate?.openGroupChannel(channel: channel!, vc: self)

}   

那是課堂測試! 測試類中的協議初始化

class calling:testDelegate{

override func viewDidLoad() {
        //blah blah       
    }   

func func open(channel: String, vc: UIViewController){
    print("calling")
}

這是上課。

我想在調用類中調用open func,但它根本不調用,即使測試類中的print(“ hello”)都沒有調用,它始終返回nil,因此也不會調用調用函數。

您需要將calling設置為test ViewController的委托。 在導航之前,在您的calling類中創建test類的對象,並將calling類設置為您的test類的委托為

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let testVc = segue.destinationViewController as? test {
    testVc .delegate = self
    }
}

希望對您有所幫助。

暫無
暫無

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

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