Swift Protocol Delegate返回nil

时间:2017-07-04 00:39:38

标签: ios iphone swift3

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 Test! test类中的protocol init以及

class calling:testDelegate{

override func viewDidLoad() {
        //blah blah       
    }   

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

这是在呼唤班级。

我想在调用类中调用open func但它根本不调用, 甚至print(" hello")在测试类中没有调用它保持返回nil因此也不调用调用函数。

1 个答案:

答案 0 :(得分:3)

您需要将calling设置为test ViewController的委托。 在您的calling班级中,在导航前创建test班级的对象,并将calling班级设为test班级的代表

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

希望它有所帮助..快乐编码!!