ios - swift 3 中的委托(delegate)不执行 View 相关代码

标签 ios swift swift3 delegates

在我的项目中,我有一些委托(delegate)可以很好地处理返回数据,但我想添加一些 subview 或在接收端的委托(delegate)方法中执行任何操作什么都没有发生,但同一方法中的其他代码都可以! 我的另一个问题也与委托(delegate)有关: 这发生在一些委托(delegate)身上。委托(delegate)没有回应,但我在网上发现了一个非常奇怪的修复程序,我需要知道为什么会发生这种情况以及为什么这个修复程序有效!

我的第一个观点:

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()
}

最佳答案

一个简单的工作原型(prototype):

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()

关于ios - swift 3 中的委托(delegate)不执行 View 相关代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381657/

相关文章:

ios safari黑色高亮元素焦点

ios - Twilio,检测对方是否接听电话?

arrays - 如何在没有可用方法的情况下手动快速执行整数数组排序?

ios - 二元运算符 '<<' 不能应用于两个 'T' 操作数

ios - 如何在iOS中定义推送通知的类型?

ios - 根据系统语言更改 UI - Swift

ios - UITableView 动态单元格高度仅在根据 uiimage View 调整单元格大小时滚动后才正确

google-analytics - 如何通过cocoapods使用iOS的Google Analytics(分析)

ios - Swift 3 向 UIView 的边缘之一添加自定义边框

ios - 使用AudioConverter将PCM转换为AAC并使用AVAssetWriter写入.mp4文件时,音频失真