如何从 UIAlertcontroller 中关闭模态 ViewController
How to dismiss modal ViewController from UIAlertcontroller
我展示了一个模式viewcontroller
,用户可以在其中决定编辑或删除展示的汽车。
如果用户想删除这辆车,我会呈现一个 UIAlertController
警告样式来询问他是否真的要删除这辆车。一切正常。但是在用户选择“Yes”之后我仍然在modal viewcontroller
。
删除后如何关闭模态视图?
我尝试了以下代码
self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)
和
self.navigationController?.popViewControllerAnimated(true)
在 ok Action 的关闭中,但两者都对我不起作用。 :(
将您的代码放入
dispatch_async(dispatch_get_main_queue(), { //write your code here
})
像那样:
func showDeleteWarningAndDeleteEntity() {
dispatch_async(dispatch_get_main_queue(), {
let deleteController = UIAlertController(title: "Delete car", message: "Are you sure?", preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
(action) in
}
let okACtion = UIAlertAction(title: "Yes", style: .Destructive) {
(action) in
//some network stuff happens here...
self.dismissViewControllerAnimated(true, completion: nil)
}
deleteController.addAction(okACtion)
deleteController.addAction(cancelAction)
self.presentViewController(deleteController, animated: true, completion: nil)
})
}
希望这对你有用
没有理由把代码写在
dispatch_async(dispatch_get_main_queue(), { //write your code here
})
以上代码用于主线程中的工作。但是这里你已经在主线程上了。
这里的问题是你正在调用
self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)
而不是只写
self.dismissViewControllerAnimated(true, completion: nil)
因为您要在 self
控制器上显示 AlertController
,所以唯一可以关闭它的人是 self
我展示了一个模式viewcontroller
,用户可以在其中决定编辑或删除展示的汽车。
如果用户想删除这辆车,我会呈现一个 UIAlertController
警告样式来询问他是否真的要删除这辆车。一切正常。但是在用户选择“Yes”之后我仍然在modal viewcontroller
。
删除后如何关闭模态视图?
我尝试了以下代码
self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)
和
self.navigationController?.popViewControllerAnimated(true)
在 ok Action 的关闭中,但两者都对我不起作用。 :(
将您的代码放入
dispatch_async(dispatch_get_main_queue(), { //write your code here
})
像那样:
func showDeleteWarningAndDeleteEntity() {
dispatch_async(dispatch_get_main_queue(), {
let deleteController = UIAlertController(title: "Delete car", message: "Are you sure?", preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
(action) in
}
let okACtion = UIAlertAction(title: "Yes", style: .Destructive) {
(action) in
//some network stuff happens here...
self.dismissViewControllerAnimated(true, completion: nil)
}
deleteController.addAction(okACtion)
deleteController.addAction(cancelAction)
self.presentViewController(deleteController, animated: true, completion: nil)
})
}
希望这对你有用
没有理由把代码写在
dispatch_async(dispatch_get_main_queue(), { //write your code here
})
以上代码用于主线程中的工作。但是这里你已经在主线程上了。
这里的问题是你正在调用
self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)
而不是只写
self.dismissViewControllerAnimated(true, completion: nil)
因为您要在 self
控制器上显示 AlertController
,所以唯一可以关闭它的人是 self