如何解除从标签栏视图中的视图打开并停留在该视图上的模式视图?
登录后我有一个标签栏视图,标签视图上有两个视图(客户端和配置文件)。
在客户端上我有一个客户列表,我可以打开另一个显示发票的视图。
点击发票,它会显示特定发票的详细信息。
在这个视图中,有一个带有一些按钮的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);
});
}
答案 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)
}