我想你想要的是这样的:
@IBOutlet weak var myView: UIView! @IBOutlet weak var myLabel: UILabel! var numbers: [Int] = [1, 7, 9, 6, 0, 3, 10, 45, 2, 83].shuffled() var currentNumber: Int { didSet { UserDefaults.standard.set(currentNumber, forKey: "currentNumberKey") myLabel.text = "\(currentNumber)" // Hide if number is 0, else show myView.isHidden = currentNumber == 0 } } private func setNextNumber() { currentNumber = numbers.shuffled().first! } override func viewDidLoad() { super.viewDidLoad() currentNumber = UserDefaults.standard.integer(forKey: "currentNumberKey") } @IBAction func closeView(_ sender: Any) { currentNumber = 0 } @IBAction func showView(_ sender: Any) { myView.isHidden = false } @IBAction func addNumber(_ sender: Any) { setNextNumber() }
设置变量 的 currentNumber 强> 将自动更新标签文本,并自动隐藏myView(如果currentNumber为零)或显示myView(如果currentNumber为非零)。
的 viewDidLoad中 强> 恢复国家。如果UIViewController消失并出现,状态会自动维护,因此不需要任何内容 的 viewWillAppear中 强> / 的 viewDidAppear 强> 和 的 viewWillDisappear 强> / 的 viewDidDisappear 强> 。