如何从 Swift 中的 UIAlertAction 访问 self?
How do I access self from UIAlertAction in Swift?
我想在有人同意警报操作时导航回根视图控制器。但是 Alert 操作不允许访问 self.
在 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
}
您也可以这样做:
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
属性定义一个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
中测试
我想在有人同意警报操作时导航回根视图控制器。但是 Alert 操作不允许访问 self.
在 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
}
您也可以这样做:
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
属性定义一个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
中测试