从标签栏视图中的视图中删除模态

时间:2018-03-07 19:52:59

标签: swift view modal-dialog uitabbarcontroller

如何解除从标签栏视图中的视图打开并停留在该视图上的模式视图?

登录后我有一个标签栏视图,标签视图上有两个视图(客户端和配置文件)。

在客户端上我有一个客户列表,我可以打开另一个显示发票的视图。

点击发票,它会显示特定发票的详细信息。

在这个视图中,有一个带有一些按钮的actionView。

其中一个按钮是“付款”。

点击“付款”时,会显示模态窗口。

然而,当我点击取消按钮时,它会删除所有视图并返回登录视图(初始视图)

发票视图

@IBAction func showActionAlert(_ sender: Any) {
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

let payButton = UIAlertAction(title: "Make Payment", style: .default, handler: { (action) -> Void in

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "MakePaymentViewController")
    self.present(controller, animated: true, completion: nil)

})

let voidButton = UIAlertAction(title: "Void", style: .destructive, handler: { (action) -> Void in
})

let deleteButton = UIAlertAction(title: "Delete", style: .destructive, handler: { (action) -> Void in
})

let cancelButton = UIAlertAction(title: "Cancel", style: .cancel, handler: { (action) -> Void in })
alertController.addAction(payButton)
alertController.addAction(voidButton)
alertController.addAction(deleteButton)
alertController.addAction(cancelButton)
self.navigationController!.present(alertController, animated: true, completion: nil)

}

模态视图

 @IBAction func cancelButton(_ sender: Any) {
     let tmpController :UIViewController! = self.presentingViewController;
     self.dismiss(animated: false, completion: {()->Void in
         tmpController.dismiss(animated: true, completion: nil);
     });
 }

Storyboard

2 个答案:

答案 0 :(得分:0)

您要呈现的控制器是您的导航堆栈所在的 navigationController

如果您从 navigationController 中显示多个 viewControllers ,然后从父/ presentViewController(即navigationController)中关闭所有呈现的控制器,则所有呈现的viewControllers都将被解除

而不是像这样呈现:

self.navigationController!.present(alertController, animated: true, completion: nil)

这样做

self.present(alertController, animated: true, completion: nil)

虽然解雇了:

self.dismiss(animated: true, completion: nil)

答案 1 :(得分:0)

我更改了cancelButton操作并且它有效:

@IBAction func cancelButton(_ sender: Any) {
    dismiss(animated: true, completion: nil)
}