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)

如果要继续,则只需按下控制器。如果要返回,请弹出控制器并创建模型以存储用户填写的值。因此,如果要继续,则只需按下控制器。如果要返回,请弹出控制器并输入用户填写的值,则向前传递模型。如果要继续,则只需按下控制器为存储用户填写的值创建模型,以便在向前移动时传递具有更新值的模型。