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在导航堆栈中的视图控制器之间循环的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 故事板中的导航控制器

iOS – 在导航堆栈中显示一个视图控制器

导航堆栈之前视图之间的协议委托

导航组件替换/更改后台堆栈

Ios 导航 - 自定义后退按钮或从堆栈中删除视图控制器?

iOS 简单视图从导航堆栈错误弹出