繁体   English   中英

协议和委托麻烦迅速

[英]Protocols and delegate trouble in swift

所有,

我创建了一个swift文件,并在其中放入了一个协议,如下所示:

protocol PayButtonProtocol {
    func enablePayButton()
    func disablePayButton()
}

我已经使我的viewcontroller符合以下协议:

class ViewController: UIViewController, PayButtonProtocol

我也已经在ViewController中创建了函数,所以它看起来像这样

func enablePayButton() {
        println("Button enabled")
        PAYBarButton.enabled = true
    }

    func disablePayButton() {
        PAYBarButton.enabled = false
    }

在另一个类中,我已经设置了委托,并且想要在按下这样的命令时执行enablePayButton:

 var delegate:PayButtonProtocol?

在功能中,我想通过以下方式执行功能之一:

delegate?.enablePayButton()

但它没有执行,我想念什么?

代表很有可能是零。 添加断点并在执行该行之前检查委托的值。 还是更改“?” 改为“!” 如果委托为零,它将崩溃,让您知道出了什么问题。

您在另一类中的代码:

var delegate:PayButtonProtocol?

定义一个名为委托的变量,其类型为PayButtonProtocol?

变量delegate将包含nil,直到您为其分配了一些东西:

delegate = <someObjectThatConformsToPayButtonProtocol>

暂无
暂无

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

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