swift 3中的delegate不执行与视图相关的代码

时间:2017-04-13 00:23:51

标签: ios swift swift3 delegates

在我的项目中,我有一些代理可以正常返回数据,但我想添加一些子视图或在接收端的委托方法中做任何事情都没有发生但是同一方法中的其他代码都没问题! 我的另一个问题也与代表们有关: 一些代表会发生这种情况。代表没有回应,但我在网上发现了一个非常奇怪的修复,我需要知道为什么会发生这种情况以及为什么这个修复工作正常!

我的第一个观点:

protocol SomeDelegate {
    func someMethod()
}

class FirstViewClass {
    //in init or didLoad method
    var delegate: SomeDelegate?

    // THIS DELEGATE WON'T WORK BUT WHEN I ADD THIS LINE IT WORKS FINE( IT STILL HAS THE ABOVE PROBLEM)
    self.delegate = SecondViewClass()

    //in some custom method
    self.delegate?.someMethod();
}

我的第二个观点:

class SecondViewClass : SomeDelegate {
    var firstView = FirstViewClass()

    // this is in init or didLoad method
    firstView.delegate = self

    //this is in some custom method
    someMethod()
}

1 个答案:

答案 0 :(得分:0)

一个简单的工作原型:

protocol SomeDelegate {
    func someMethod()
}

class FirstViewClass {
    var delegate: SomeDelegate?
}

class SecondViewClass : SomeDelegate {
    var firstView = FirstViewClass()

    func someMethod() {
        print("called via delegate")
    }
}

var firstClass = FirstViewClass()

var secondClass = SecondViewClass()

firstClass.delegate = secondClass

firstClass.delegate?.someMethod()