iOS在导航堆栈中的视图控制器之间循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS在导航堆栈中的视图控制器之间循环相关的知识,希望对你有一定的参考价值。
我的任务是在ios
应用程序中创建一个流程,用户可以在其中添加多个步骤,其中步骤的数量未定义,每个步骤在导航堆栈中充当ViewController
,用户可以在移动时添加多个步骤(VCs
)向后移动导航堆栈进行编辑,同时向后移动到现有步骤并且不丢失任何输入数据。
示例:用户创建步骤1,用户创建步骤2,用户创建步骤3,用户返回步骤2,用户返回步骤1,编辑信息,前进到步骤2,前进到步骤3,等等。
到目前为止,我正在考虑创建一种计数器,以跟踪用户所处的步骤,以及包含构建每个Classes
的数据的VC
数组,但我对VC
初始化器和navigationController
有点麻烦推动和弹出。
任何帮助将不胜感激,也许有人有自己的东西。
答案
您应该创建一个类来保存步骤对象
像这样的东西
class DataClass {
static let shared = DataClass()
var arrayObjects: [Any]
private init() {
arrayObjects = []
}
func addObject(object: Any) -> [Any] {
arrayObjects.append(object)
return arrayObjects
}
func clearObjects() {
arrayObjects.removeAll()
}
func object(at step: Int) -> Any? {
guard arrayObjects.count > step else {
return nil
}
return DataClass.shared.arrayObjects[step]
}
}
并在每个步骤中使用这样的数据。
DataClass.shared.object(at: step)
另一答案
您可以通过将ViewController
本地存储到数组中来达到上述要求。
步骤:1创建UIViewController的全局数组,如下所示。
var aryAllViewController = [UIViewController]()
步骤:2 Append value into Array as below.
aryAllViewController.append(VC)
步骤:3从Array获取旧的ViewController
引用并再次将其推入导航堆栈。
如果您正确执行上述步骤,则会自动显示旧数据。
以上是关于iOS在导航堆栈中的视图控制器之间循环的主要内容,如果未能解决你的问题,请参考以下文章