协议和快速委托麻烦

时间:2015-06-05 16:08:42

标签: ios 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()

但它没有执行,我错过了什么?

1 个答案:

答案 0 :(得分:1)

超过可能的代表是零。添加断点并在该行执行之前检查委托的值。或者改变“?”到一个“!”如果委托是零,它会崩溃,让你知道什么是错的。

您在其他课程中的代码:

var delegate:PayButtonProtocol?

定义名为delegate的变量,类型为PayButtonProtocol?

变量delegate将包含nil,直到您为其指定了内容:

delegate = <someObjectThatConformsToPayButtonProtocol>