Сохранение прогресса sender.tag после закрытия представления - PullRequest
0 голосов
/ 24 января 2019

Я кодирую приложение, в котором всплывающее окно имеет кнопку, которая выполняет другое действие при каждом нажатии (см. Код).Но после того, как я закрыл представление, прогресс sender.tag теряется, и он начинается с самого начала снова.

Я был бы очень рад за помощь сообщества!

Моя первая идея состояла в том, что это как-то связано с хранением данных, но после некоторых попыток с использованием string, int и т. Д.Я не мог понять, как сохранить прогресс sender.tag, поэтому, если представление снова открывается, мне не нужно снова просматривать все параметры, а просто начать там, где я оставил.

@IBAction func nextTask(_ sender: UIButton) {

        sender.tag += 1

        switch sender.tag {

        case 1: print("Hello")

        case 2: print("Yes")
        default:

            print("The End")
        }

    }

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете попробовать создать свойство в своем классе и использовать его для отображения представления

var counter = 0

@IBAction func nextTask(_ sender: UIButton) {
    counter += 1

    switch counter {

    case 1: print("Hello")

    case 2: print("Yes")
    default:
        counter = 0
        print("The End")
    }

}

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

0 голосов
/ 24 января 2019

Если вам нужно сохранить какое-то одно значение даже после деинициализации контроллера представления (например, приложение закрывается, контроллер представления закрывается), вы можете сохранить это значение в UserDefaults для некоторого ключа ( actionID )и затем вы можете получить это значение в любое время и в любом месте вашего приложения, получив объект для этого ключа

Сохранение:

UserDefaults.standard.set(value, forKey: "key")

Получение:

var intValue = UserDefaults.standard.integer(forKey: "key")

@IBAction func nextTask(_ sender: UIButton) {

    var actionID = UserDefaults.standard.integer(forKey: "actionID")
    if actionID <= 2 {
        actionID += 1
        UserDefaults.standard.set(actionID, forKey: "actionID") // set increased `actionID`
    }

    switch actionID {
    case 1: print("Hello")
    case 2: print("Yes")
    default: print("The End")
    }

}
...