iOS在导航堆栈中的视图控制器之间循环

时间:2018-08-30 02:59:12

标签: ios uiviewcontroller navigation

我的任务是在iOS应用程序中创建流程,用户可以在其中添加多个步骤,其中步骤的数量未定义,每个步骤在导航堆栈中充当ViewController,用户可以在导航堆栈中向后移动进行编辑的同时添加多个步骤(VCs),同时向前移动至现有步骤并且不会丢失任何输入的数据。

示例:用户创建第1步,用户创建第2步,用户创建第3步,用户返回到第2步,用户回到第1步,编辑信息,前进到第2步前进到步骤3,依此类推。

到目前为止,我正在考虑创建一种计数器,以跟踪除包含Classes构成每个VC的数据的VC数组之外,用户正在执行的步骤。 navigationController初始化程序和Public Sub ExportAsCSV(savePath) Workbooks("OND Estimator").Worksheets("port").Copy 'Sheet to export as CSV Application.DisplayAlerts = False 'Possibly overwrite without asking with activeworkbook .SaveAs Filename:=savePath, FileFormat:=xlCSV .Close savechanges:=False end with Application.DisplayAlerts = True End Sub 的推送和弹出操作有些麻烦。

任何帮助将不胜感激,也许有人袖手旁观。

2 个答案:

答案 0 :(得分:1)

您可以通过将ViewController本地存储到数组中来达到上述要求。

步骤:1 ,如下所示创建UIViewController的全局数组。

var aryAllViewController = [UIViewController]()

步骤:2 Append value into Array as below.

aryAllViewController.append(VC)

步骤:3 从Array获取旧的ViewController引用,然后将其再次推送到Navigation Stack中。

如果正确执行上述步骤,则旧数据将自动显示。

答案 1 :(得分:1)

您应该创建一个用于容纳步骤对象的类

类似这样的东西

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)