为什么我不能在函数之外声明一个处理程序?

时间:2015-11-10 03:22:53

标签: ios swift block handler

我可以在函数中声明这样的处理程序:

    @IBAction func handleActionSheetPressed(sender: UIButton) {
        let dismisHandler:(UIAlertAction)->Void = {(action:UIAlertAction) in
            self.dismissViewControllerAnimated(true , completion: nil)
    }

但是当我在函数之外声明这个处理程序时,我收到了一个错误:

  

"类型的价值' NSObject - > () - >视图控制器'没有会员   ' dismissViewControllerAnimated' "

有人能告诉我如何在函数之外声明这个处理程序吗?

1 个答案:

答案 0 :(得分:1)

您不能在类属性的闭包声明中使用self实例,因为此变量可以在另一个类上使用。 因此,您必须为要调用的视图控制器添加一个额外的参数。

var dismisHandler:(UIAlertAction, UIViewController)->Void = {(action:UIAlertAction, vc) in

        vc.dismissViewControllerAnimated(true, completion: nil)
    }