为什么我不能在函数外声明处理程序?
Why can't I declare a handler outside of a function?
我可以在函数中声明这样的处理程序:
@IBAction func handleActionSheetPressed(sender: UIButton) {
let dismisHandler:(UIAlertAction)->Void = {(action:UIAlertAction) in
self.dismissViewControllerAnimated(true , completion: nil)
}
但是当我在函数外声明这个处理程序时,我得到了一个错误:
"Value of type 'NSObject -> () -> ViewController' has no member
'dismissViewControllerAnimated' ".
谁能告诉我如何在函数外声明这个处理程序?
您不能在 class 属性 的闭包声明中使用 self
实例,因为这个变量可以在另一个 class 上使用。
因此,您必须为要调用 dismiss 的视图控制器添加一个额外的参数。
var dismisHandler:(UIAlertAction, UIViewController)->Void = {(action:UIAlertAction, vc) in
vc.dismissViewControllerAnimated(true, completion: nil)
}
我可以在函数中声明这样的处理程序:
@IBAction func handleActionSheetPressed(sender: UIButton) {
let dismisHandler:(UIAlertAction)->Void = {(action:UIAlertAction) in
self.dismissViewControllerAnimated(true , completion: nil)
}
但是当我在函数外声明这个处理程序时,我得到了一个错误:
"Value of type 'NSObject -> () -> ViewController' has no member 'dismissViewControllerAnimated' ".
谁能告诉我如何在函数外声明这个处理程序?
您不能在 class 属性 的闭包声明中使用 self
实例,因为这个变量可以在另一个 class 上使用。
因此,您必须为要调用 dismiss 的视图控制器添加一个额外的参数。
var dismisHandler:(UIAlertAction, UIViewController)->Void = {(action:UIAlertAction, vc) in
vc.dismissViewControllerAnimated(true, completion: nil)
}