2015-11-10 3 views
-1

я могу объявить обработчик, как это внутри функции:Почему я не могу объявить обработчик вне функции?

@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' ".

Может кто-нибудь сказать мне, как объявить этот обработчик вне функции?

+0

, в котором определен класс 'handleActionSheetPressed' класса? пожалуйста, покажите нам свой код полностью. – ozgur

+0

подкласс UIViewControlller – wj2061

ответ

1

Вы не можете использовать экземпляр self в объявлении закрытия в свойстве класса, поскольку эту переменную можно использовать в другом классе. Итак, вы должны добавить дополнительный аргумент для контроллера вида, который вы хотите вызвать увольнением.

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

     vc.dismissViewControllerAnimated(true, completion: nil) 
    }