繁体   English   中英

Swift:ProtocolDelegate可选值错误

[英]Swift: ProtocolDelegate optional value error

我想将一些任务委托给AcceptController,但是我在'SendController'内部的委托属性始终返回nil,因此将永远不会执行委托。 我只是不知道为什么我的委托属性'übergabeDelegate'总是返回nil。

protocol ÜbergabeDelegate {
    func übergebeText(text: String)
}

class SendController: UIViewController {
    @IBOutlet weak var textField: UITextField!

    var übergabeDelegate: ÜbergabeDelegate?

    @IBAction func save(_ sender: UIButton) {
        if let text = textField.text {
            if übergabeDelegate != nil {
                übergabeDelegate!.übergebeText(text: text)
            } else {
                print("\nübergabeDelegate is nil\n")
            }
        }
    }
}

class AcceptController: UIViewController {
    @IBOutlet weak var label: UILabel!

    let sendController = SendController()

    override func viewDidLoad() {
        super.viewDidLoad()


        sendController.übergabeDelegate = self
        //print("Delegate gesetzt")
    }
}

extension AcceptController: ÜbergabeDelegate {
    func übergebeText(text: String) {
        label.text = "\(text)"
    }
}

我希望标签显示我在SendController上提供的输入,但是标签的文本永远不会实际更改。

viewDidLoad内部, let sendController = SendController()创建一个局部变量。 viewDidLoad返回后,将释放sendController 设置sendController为的属性AcceptController ,当你分配给它,因为委托将持续SendController对象之后不会被释放viewDidLoad的回报。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM