如何从Swift中的UIAlertAction访问self?

时间:2015-11-13 23:05:21

标签: ios swift uialertaction

当有人对警报操作说好时,我想导航回根视图控制器。但警报操作不允许访问自己。

在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 个答案:

答案 0 :(得分:1)

您所要做的就是为okAction属性定义一个getter。

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

在Xcode 7.1.1中测试

答案 1 :(得分: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)

答案 2 :(得分:0)

在尝试从导航控制器弹出之前,您需要关闭显示的视图控制器(警报)。