Как мне получить доступ к себе из UIAlertAction в Swift?

Я хочу вернуться к корневому контроллеру представления, когда кто-то скажет, что все в порядке с предупреждением. Но действие Alert не позволяет получить доступ к себе.

Как обходить текущий контроллер навигации в AlertAction,

вот код,

func buttonAction(sender:UIButton!)
{
let alertController = UIAlertController(title: "IQ", message:"Thank you for your feedback!", preferredStyle: .Alert)
alertController.addAction(okAction)
self.presentViewController(alertController, animated: true, completion: nil)
}

var okAction = UIAlertAction(title: "Menu", style:UIAlertActionStyle.Default) {
UIAlertAction in
NSLog("OK Pressed")
self.navigationController?.popToRootViewControllerAnimated(true) //error
}

3 ответа

Решение

Вместо этого вы можете сделать это следующим образом:

let alert = UIAlertController(title: "Alert", message: "Message.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { action in
        self.navigationController?.popToRootViewControllerAnimated(true)
}))
self.presentViewController(alert, animated: true, completion: nil)

Все, что вам нужно сделать, это определить геттер для okAction имущество.

var okAction: UIAlertAction {        
    get {
        return UIAlertAction(title: "Menu", style:UIAlertActionStyle.Default) {
            UIAlertAction in
            NSLog("OK Pressed")
            self.navigationController?.popToRootViewControllerAnimated(true)
        }
    }
}

Протестировано в Xcode 7.1.1

Вам нужно отклонить представленный контроллер представления (Предупреждение), прежде чем пытаться выскочить из контроллера навигации.

Другие вопросы по тегам