0

我正在为我用 swift 编写的 iOS 应用程序使用材料设计对话框。以下是材料设计对话框的简要文档:https ://material.io/develop/ios/components/dialogs/

我有一个包含 1 个动作的对话框,在动作的完成块中,我想关闭视图控制器并返回到前一个视图控制器。问题是关闭视图控制器不起作用。除了关闭视图控制器之外,完成块中写入的所有指令(例如打印某些内容)都会执行。

这是我的代码:

DispatchQueue.main.async {
        let alertStr = "Alert"
        let alertController = MDCAlertController(title: "Error", message: alertStr)
        let action = MDCAlertAction(title:"GoBack") { (action) in
            self.dismiss(animated: false, completion: nil)
        }
        alertController.addAction(action)
        self.present(alertController, animated:true, completion:nil)
    }

如果您能帮我解决问题,我将不胜感激。提前致谢 !

4

2 回答 2

0

几个想法:

  1. dismiss(animated:completion:)关闭视图控制器以模态方式呈现的视图控制器。” 它并不打算关闭由self.

    诚然,dismiss“如果您在呈现的视图控制器本身上调用此方法,UIKit 会要求呈现的视图控制器处理解雇。” 但是您不能在按钮中依赖它UIAlertAction,因为您不知道何时解除MDCAlertController按钮以及何时执行按钮的操作。

  2. 您确定您展示了视图控制器,并且它不是,例如,而是推送了导航控制器?

  3. 回到先前视图控制器的一个好方法是展开转场(或参见TN2298)。这消除了关于“push”和“present”的所有歧义,以及是否dismiss会关闭呈现的视图控制器,而是将消息传递给呈现的视图控制器。

于 2019-01-05T19:37:13.553 回答
-1

你试过了吗

  performSegue(withIdentifier: "ViewControllerSegue", sender: nil)

您需要在顶栏上选择您的 viewController 黄色方块(名称是您预定义的名称)右键单击并拖动到下一个视图控制器 ---> Present Modally 然后选择箭头并转到属性检查器并命名标识符.

于 2019-01-05T18:25:07.953 回答