首页 文章

如何从UIAlertController的UIAlertAction处理程序中解除UIViewController?

提问于
浏览
6

我想向用户提供一个简单的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) ,但这也没有用 .

2 回答

  • 8

    运用

    self.navigationController?.popViewControllerAnimated(true)
    

    代替

    self.dismissViewControllerAnimated(true, completion: nil)
    

    根据需要工作并关闭显示警报的视图控制器 .

  • 0

    您使用presentViewController来呈现警报 . 因此,如果您使用self.dismissViewController,它只是解除警报,而不是父视图控制器 . 如果您尝试隐藏父视图控制器,则可以创建宽度高度等于self.view的视图,并将其设置为黑色 . 然后使用view.addSubView随时添加它 .

相关问题