代表不工作

时间:2016-08-21 21:04:21

标签: ios swift

我在类

中声明了一个协议
public protocol demoDelegate {
    func willShowdemoResult(DemoGraph: UIView)
}

现在我在声明协议的同一个类中调用它。

public class Demo:UIViewController {
public var delegate : demoDelegate!

//some code 

 self.delegate.willShowdemoResult(self.demoGraph())
}

其中演示图返回UI图

func demoGraph() -> UIView {
       //some code

        return demoGraphView
    }

我收到一个错误,在包装可选值时意外地发现了nil。我知道我没有初始化代表的原因。有人可以指导我如何在这里初始化代表。

该函数正在其他类中调用

class DemoResult: UIViewController, demoDelegate{
func willShowdemoResult(DemoGraph: UIView)
// some code
}

请帮助

1 个答案:

答案 0 :(得分:1)

您收到错误,因为Demo.delegate在调用时为nil

delegate.willShowdemoResult(self.demoGraph())

在进行此调用之前,请确保已设置delegate属性。我会在初始化Demo后或DemoResult获得Demo - 实例的地址后立即推荐此内容。

假设您在Demo中存储了DemoResult.demoVC的实例。然后,您可以在delegate中设置DemoResult,如下所示:

demoVC.delegate = self

BTW:最好使用可选类型来存储代理:

public var delegate: demoDelegate?

如果delegate是可选的,delegate?.willShowdemoResult(self.demoGraph())如果delegate尚未初始化,则不会崩溃。