【发布时间】:2023-04-11 03:24:02
【问题描述】:
我有一个反馈视图控制器,可以在 4 个不同屏幕的 7 个位置访问。
通过pushViewController 在navigationController 中呈现它的一种方式。其他 6 次以模态方式呈现。
这是打开反馈 VC 的函数
struct Constants{
static func openFeedback(openFrom: UIViewController, nav:Bool) {
let fbStoryboard = UIStoryboard(name: "FeedbackViewController", bundle: nil)
let fbVC = fbStoryboard.instantiateViewController(withIdentifier: "FBSBID")
fbVC.modalPresentationStyle = .overFullScreen
fbVC.modalTransitionStyle = .crossDissolve
if nav {
openFrom.navigationController?.pushViewController(fbVC, animated: true)
} else {
openFrom.present(fbVC, animated: true, completion: nil)
}
}
}
使用Constants.openFeedback(openFrom: self, nav: true) 或Constants.openFeedback(openFrom: self, nav: false) 调用反馈VC
打开 VC 就好了!
这是反馈视图控制器上的关闭按钮:
@IBAction func closeButtonPressed(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}
当不在导航堆栈中时,这 7 次中有 6 次有效。当它在导航堆栈中时,关闭按钮不做任何事情。
我的问题是,我如何关闭反馈视图控制器,基于它是否在 navigationController 堆栈中?
【问题讨论】:
标签: ios swift uinavigationcontroller dismiss