gpt4 book ai didi

ios - 更改导航后退按钮的目的地

转载 作者:可可西里 更新时间:2023-11-01 03:06:21 25 4
gpt4 key购买 nike

如何更改默认导航后退按钮将我带到的 View Controller ?后退按钮通常会将您带回到上一个 View Controller 。但是如果我想让它通过两个 View Controller 返回怎么办?我的意思是我想更改后退按钮将我带到的 View Controller 。我不喜欢创建自定义后退按钮。那么有没有别的办法呢?可能是与后退按钮或其他东西相关联的展开转场?

最佳答案

实现您想要的行为的最简单方法可能是使用 navigationController.setViewControllers(controllers, animated: true)

如果你想从 Controller A 返回 2 个 Controller 而不是一个,请在呈现 A 时使用此自定义转场:

class ReplaceControllerSegue: UIStoryboardSegue {
override func perform() {
if let navigationController = sourceViewController.navigationController as UINavigationController? {
var controllers = navigationController.viewControllers
controllers.removeLast()
controllers.append(destinationViewController)
navigationController.setViewControllers(controllers, animated: true)
}
}
}

这是一个很好的教程,如何在 Interface Builder 中为您的 segue 设置自定义类:http://blog.jimjh.com/a-short-tutorial-on-custom-storyboard-segues.html

如果您通过代码呈现 Controller ,请使用此类别:

extension UINavigationController {
func replaceCurrentViewControllerWith(viewController: UIViewController, animated: Bool) {
var controllers = viewControllers
controllers.removeLast()
controllers.append(viewController)
setViewControllers(controllers, animated: animated)
}
}

然后只需使用 self.navigationController!.replaceCurrentViewControllerWith(newController, animated: true) 而不是 self.navigationControllerPushViewController(newController, animated: true)

很容易调整此代码以根据需要删除尽可能多的 Controller 。

关于ios - 更改导航后退按钮的目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589800/

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