视图关闭后存储 sender.tag 进度

Storing sender.tag progress after view closes

我正在编写一个应用程序,其中会弹出一个视图并有一个按钮,每次单击它时都会执行不同的操作(请参阅代码)。但是我关闭视图后, sender.tag 的进度丢失了,它又从头开始了。

如果社区能提供一些帮助,我将非常高兴!

我的第一个想法是它与存储数据有关,但是在尝试了字符串、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")
        }

    }

如果即使在视图控制器被取消初始化后(例如,应用程序终止,视图控制器被关闭),如果您需要保存一些单个值,您可以将这个值保存到 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")
    }

}

您可以尝试在 class 中创建一个 属性 并使用它来显示视图

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")
    }

}

因此,下次您单击该视图上的按钮时,计数器将具有正确的值。