我想向用户提供一个简单的UIAlertController,其中一个选项触发关闭父视图控制器。这是我正在使用的代码:
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Close View", style: UIAlertActionStyle.Destructive, handler: {
action in
self.dismissViewControllerAnimated(true, completion: nil)
}))
alert.addAction(UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
它没有任何效果。执行“关闭视图”处理程序后,显示警报的视图控制器仍然存在。
我还在UIAlertAction操作块中尝试了self.navigationController?.dismissViewControllerAnimated(true, completion: nil)
,但这也没有用。
答案 0 :(得分:8)
使用
self.navigationController?.popViewControllerAnimated(true)
而不是
self.dismissViewControllerAnimated(true, completion: nil)
按需运行并关闭显示警报的视图控制器。
答案 1 :(得分:0)
您使用presentViewController来呈现警报。因此,如果您使用self.dismissViewController,它只是解除警报,而不是父视图控制器。如果您尝试隐藏父视图控制器,则可以创建宽度高度等于self.view的视图,并将其设置为黑色。然后使用view.addSubView在任何时候添加它。