iOS在导航堆栈中的视图控制器之间循环
我的任务是在一个iOS在导航堆栈中的视图控制器之间循环,ios,uiviewcontroller,navigation,Ios,Uiviewcontroller,Navigation,我的任务是在一个iOS应用程序中创建一个流,其中用户可以添加多个步骤,步骤数未定义,每个步骤在导航堆栈中充当ViewController,用户可以添加多个步骤(VCs),同时在导航堆栈中向后移动进行编辑,在返回到现有步骤且不丢失任何输入数据的情况下 示例:用户创建步骤1、用户创建步骤2、用户创建步骤3、用户返回步骤2、用户返回步骤1、编辑信息、前进到步骤2、前进到步骤3,等等 到目前为止,我正在考虑创建一种计数器来跟踪用户所处的步骤,另外还有一组类,这些类保存着构建每个VC的数据,但是我在VC初
iOS
应用程序中创建一个流,其中用户可以添加多个步骤,步骤数未定义,每个步骤在导航堆栈中充当ViewController
,用户可以添加多个步骤(VCs
),同时在导航堆栈中向后移动进行编辑,在返回到现有步骤且不丢失任何输入数据的情况下
示例:用户创建步骤1、用户创建步骤2、用户创建步骤3、用户返回步骤2、用户返回步骤1、编辑信息、前进到步骤2、前进到步骤3,等等
到目前为止,我正在考虑创建一种计数器来跟踪用户所处的步骤,另外还有一组类
,这些类保存着构建每个VC
的数据,但是我在VC
初始化器和navigationController
推送和弹出时遇到了一些问题
如果您有任何帮助,我们将不胜感激,也许有人已经有所准备。您可以通过将
ViewController
本地存储到阵列中来实现上述要求
步骤:1创建UIViewController的全局数组,如下所示
var aryAllViewController = [UIViewController]()
步骤:2将值追加到数组中,如下所示。
aryAllViewController.append(VC)
步骤:3从数组中获取旧的ViewController
引用,并将其再次推入导航堆栈
如果您正确执行上述步骤,则旧数据将自动显示。您可以通过将
ViewController
本地存储到阵列中来实现上述要求
步骤:1创建UIViewController的全局数组,如下所示
var aryAllViewController = [UIViewController]()
步骤:2将值追加到数组中,如下所示。
aryAllViewController.append(VC)
步骤:3从数组中获取旧的ViewController
引用,并将其再次推入导航堆栈
如果正确执行上述步骤,则旧数据将自动显示。您应该创建一个类来保存步骤对象 像这样的
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)
您应该创建一个类来保存步骤对象 像这样的
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)
如果要继续,则只需按下控制器。如果要返回,请弹出控制器并创建模型以存储用户填写的值。因此,如果要继续,则只需按下控制器。如果要返回,请弹出控制器并输入用户填写的值,则向前传递模型。如果要继续,则只需按下控制器为存储用户填写的值创建模型,以便在向前移动时传递具有更新值的模型。