gpt4 book ai didi

xcode - 如何在 iOS 中按顺序显示 Controller (作为队列,而不是堆栈)?

转载 作者:行者123 更新时间:2023-11-30 14:11:12 24 4
gpt4 key购买 nike

想象一个显示问题列表的应用程序,每个问题都有一个与特定 UIViewController 关联的类型(因此每种类型的问题都有多个 UIViewController 对象该应用程序支持)。用户无法返回到之前回答过的问题。我想向每个 Controller 显示与 pushViewController 方法给出的相同效果。

这里有一个问题。应用程序可能会提出大量问题,因此将所有这些 UIViewController 对象保留在内存中并不是一个可行的选择。由于无法返回到之前回答的问题,因此应用程序只需要跟踪最后显示的两个问题(出于动画目的,当当前问题显示在上一个问题上方时)。

关于如何在 Swift 中实现这一点有什么建议吗? (如果我以后可以将它转换为 Swift,我也可以使用 ObjectiveC 解决方案)。

最佳答案

子类化 UINavigationController,然后将导航 Controller 的委托(delegate)设置为其自身,然后当显示 Controller 时,从堆栈中删除除正在显示的 Controller 之外的所有其他 Controller 。这样,您的导航 Controller 在任何时候都只有一个 View Controller ,并且您将无法弹出而只能推送 View Controller 。

这是一个小样本,

class MyNavigationController: UINavigationController, UINavigationControllerDelegate {

// MARK: UINavigationControllerDelegate
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
self.viewControllers = [viewController]
}
}

然后,将所有 View Controller 插入此 View Controller 内。这样就可以了。

关于xcode - 如何在 iOS 中按顺序显示 Controller (作为队列,而不是堆栈)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747803/

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