gpt4 book ai didi

iOS Swift Navigation 通过重定向展开

转载 作者:行者123 更新时间:2023-11-28 15:58:35 24 4
gpt4 key购买 nike

我想实现以下内容:(我正在使用导航 Controller ) enter image description here

View A 有几个选项可以决定采用哪条路径。第一个显示 View B,然后使用导航 Controller 显示 View C。工具栏的第一项执行展开到 View A。这有效。工具栏中的第二项,我不仅要展开到 A,还要重定向到 View E。

A View Controller 中的代码如下所示:

@IBAction func unwindToHomeController(segue: UIStoryboardSegue) {
self.performSegue(withIdentifier: "toPerson", sender: self)
}

当我单击工具栏中的第二项时,会显示 View E,但会在短暂延迟后立即显示 View A。

如何停止显示 View A?

也许有更好的方法。

最佳答案

你需要等待动画完成才能执行Segue到E:

class ViewController: UIViewController {

@IBAction func unwindToA(segue: UIStoryboardSegue) {
}

@IBAction func unwindToE(segue: UIStoryboardSegue) {
CATransaction.begin()
CATransaction.setCompletionBlock {
self.performSegue(withIdentifier: "E", sender: nil)
}
CATransaction.commit()
}

}

Normal unwind

已更新 为了避免在按下 E 时闪烁显示 A

1)移除unwindToE函数:

extension ViewController {

@IBAction func unwindToA(segue: UIStoryboardSegue) {
}

// @IBAction func unwindToE(segue: UIStoryboardSegue) {
// CATransaction.begin()
// CATransaction.setCompletionBlock {
// self.performSegue(withIdentifier: "E", sender: nil)
// }
// CATransaction.commit()
// }

}

2) 创建自定义转场:

class MyUnwindSegue: UIStoryboardSegue {

override func perform() {

guard let nav = source.navigationController else { return }
guard let root = nav.viewControllers.first else { return }
let viewControllers = [root, destination]
nav.setViewControllers(viewControllers, animated: true)

}

}

3) 在 Storyboard中将 segue 更新为 MyUnwindSegue(确保为您的项目模块选择了 Module 而不是empty):

Using custom unwind segue

关于iOS Swift Navigation 通过重定向展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41404259/

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