我正在使用 Storyboard并拥有 3 个 VC。当我使用 VC3 时,我希望后退按钮可以跳过 VC2 并转到 VC1。
我尝试了以下方法,但 VC2 在到达 VC1 之前闪烁
override func viewWillDisappear(_ animated: Bool) {
self.navigationController?.popViewController(animated: true)
}
我的自定义返回代码:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "arrow_back")
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "arrow_back")
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: #selector(self.backPressed(_:)))
self.navigationController?.navigationBar.barStyle = .black
}
@objc func backPressed(_ sender: Any){
print("here")
self.navigationController?.popToRootViewController(animated: false)
}
最佳答案
viewDidLoad 的变化
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "arrow_back")
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "arrow_back")
var backButton = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(backPressed(_:)))
navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
self.navigationController?.navigationBar.barStyle = .black
}
添加 如果你想首先使用 Controller
@objc func backPressed(_ sender: Any){
self.navigationController?.popToRootViewController(animated: true)
}
如果它不是导航 Controller 中的第一个 View Controller
@objc func backPressed(_ sender: Any){
let controllerToBeReached = navigationController!.viewControllers.filter { $0 is YourViewController }.first!
navigationController!.popToViewController(controllerToBeReached, animated: true)
}
关于ios - 返回根导航 Controller 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58128258/