gpt4 book ai didi

ios - 在使用 push segue 之前检查是否可以使用 unwind segue

转载 作者:可可西里 更新时间:2023-11-01 04:57:55 24 4
gpt4 key购买 nike

在使用 segues 的导航中,我们可以从根 Controller 推送 Controller A 或 B。

我们可以从 A 推送 C,然后推送 B,后者稍后可以展开到 A 以重新启动进程。

我们可以从 B 推送 A,A 推送 C,后者稍后可以展开到 B 以重新启动进程。

在 B 中,我们有一个按钮,上面写着“转到 A”,它必须根据场景展开或插入 Controller A。

diagram

我如何轻松知道我是否可以在执行推送转场之前放松?

现在我使用 navigationController 数组来检查前一个 Controller 是 C 来推送还是展开。我想知道使用 segues 的这种循环的通用解决方案,例如:

if B can unwind to A then unwind else push A

所以,问题是,如何在不访问 navigationController 数组的情况下检查B 是否可以展开到 A

最佳答案

这是我针对这个问题的通用解决方案,适用于 Swift 应用程序:

  • 假设 UINavigationController 包含
  • 在每个要展开到的 XXX 中定义 unwindToXXX: 方法
  • 在每个可以展开或推送到 XXX 的 YYY 中,定义 segues unwindToXXXshowXXX

然后你可以简单地调用gotoController("unWindToXXX", "showXXX")给定

func gotoController(unwind: String, show: String) {
let action = Selector(unwind + ":")
if let target = navigationController?.viewControllerForUnwindSegueAction(action, fromViewController: self, withSender: self)
{
assert(target.canPerformUnwindSegueAction(action, fromViewController: self, withSender: self))
performSegueWithIdentifier(unwind, sender: self)
} else {
performSegueWithIdentifier(show, sender: self)
}
}

关于ios - 在使用 push segue 之前检查是否可以使用 unwind segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22406762/

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