Цикл iOS между контроллерами представления в стеке навигации - PullRequest
0 голосов
/ 30 августа 2018

Мне было поручено создать поток в приложении iOS, где пользователь может добавить несколько шагов, где число шагов не определено, каждый шаг действует как ViewController в стеке навигации, и пользователь может добавить несколько шагов (VCs) при перемещении назад в стеке навигации для редактирования, при движении назад к существующему шагу без потери введенных данных.

Пример: Пользователь создает шаг 1, пользователь создает шаг 2, пользователь создает шаг 3, пользователь возвращается к шагу 2, пользователь возвращается к шагу 1, редактирует информацию, переходит к шагу 2, перемещается перейти к шагу 3 и т. д.

Пока что я думаю о создании своего рода счетчика для отслеживания того, на каком шаге находится пользователь, в дополнение к массиву Classes, который содержит данные, составляющие каждый VC, но у меня есть небольшие проблемы с VC инициализаторами и navigationController нажатием и выталкиванием.

Буду признателен за любую помощь, возможно, у кого-то есть что-то в рукаве.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы должны создать класс для хранения шагов объектов

Примерно так

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)
0 голосов
/ 30 августа 2018

Вы можете достичь вышеупомянутого требования, храня ViewController локально в массиве.

Шаг: 1 Создайте глобальный массив UIViewController, как показано ниже.

var aryAllViewController = [UIViewController]()

Шаг: 2 Append value into Array as below.

aryAllViewController.append(VC)

Шаг: 3 Получить старую ссылку ViewController из массива и снова вставить ее в стек навигации.

Если вы правильно выполните вышеуказанный шаг, тогда старые данные отобразятся автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...