2015-11-13 1 views
0

Я хочу перейти к контроллеру корневого представления, когда кто-то говорит «ОК» о действии предупреждения. Но действие Alert не позволяет получить доступ к себе.Как получить доступ к себе из UIAlertAction в Swift?

Что такое работа вокруг, чтобы получить текущую навигацию контроллер в 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 
} 

ответ

0

Вы могли бы сделать это таким образом, вместо:

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) 
0

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

1

Все, что вам нужно сделать, это определить геттер для объекта 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

Смежные вопросы