gpt4 book ai didi

ios - 弹出或关闭 ViewController

转载 作者:行者123 更新时间:2023-11-28 13:50:25 24 4
gpt4 key购买 nike

我有一个反馈 View Controller ,可在 4 个不同屏幕的 7 个位置访问。

它通过 pushViewControllernavigationController 中呈现的一种方式。其他 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)
}
}
}

反馈 VC 通过 Constants.openFeedback(openFrom: self, nav: true)Constants.openFeedback(openFrom: self, nav: false)

打开 VC 就可以了!

这是我在反馈 View Controller 上的关闭按钮:

@IBAction func closeButtonPressed(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}

当不在导航堆栈中时,这 7 次中有 6 次有效。当它位于导航堆栈中时,关闭按钮不会执行任何操作。

我的问题是,如何根据反馈 View Controller 是否在导航 Controller 堆栈中来关闭它?

最佳答案

您可以通过检查 Controller 的 navigationController 是否为 nil 来简单地检查 View Controller 是否嵌入在 UINavigationController 中。

因此,如果它是嵌入式的,您可以在导航 Controller 上使用 popViewController(animated:) 来“关闭”推送的 Controller

if let navCon = navigationController {
navCon.popViewController(animated: true)
} else {
dismiss(animated: true)
}

关于ios - 弹出或关闭 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54720611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com