如何从UIAlertcontroller中解除模态ViewController

时间:2016-09-09 09:47:43

标签: ios swift uiviewcontroller modalviewcontroller uialertcontroller

我会显示一个模态viewcontroller,用户可以决定编辑或删除显示的汽车。

如果用户想要删除这辆车,我会提出一个警告风格UIAlertController来询问他是否真的要删除这辆车。一切正常。但在用户选择“”后,我仍然在modal viewcontroller

删除后如何解除模态视图?

我尝试过以下代码

self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)

self.navigationController?.popViewControllerAnimated(true)

关闭ok动作,但两者都不适合我。 :(

2 个答案:

答案 0 :(得分:2)

没有理由在

中编写代码
dispatch_async(dispatch_get_main_queue(), {    //write your code here

 })

以上代码用于主线程中的工作。但是你已经在主线上了。

这里的问题是你在打电话

self.parentViewController?.dismissViewControllerAnimated(true, completion: nil)

而不是只写

self.dismissViewControllerAnimated(true, completion: nil)

因为您在AlertController控制器上展示self所以唯一可以解雇它的人是self

答案 1 :(得分:1)

将您的代码放在

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

}

希望这对你有用