Как мне получить доступ к себе из 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
Вам нужно отклонить представленный контроллер представления (Предупреждение), прежде чем пытаться выскочить из контроллера навигации.