如果调用了所有类,则更改所有视图控制器的背景颜色(swift4)



当用户不按特定顺序访问所有三个视图控制器时。我希望这个程序中的所有视图控制器都变为绿色。但前提是所有三个班都参观过。我不知道这是coredata还是userdefolat。

import UIKit
class oneV: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
class twoV: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
class threeV: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}

UserDefaults将非常适合此操作,在其viewDidLoad函数中为每个UIViewController保存一个标志。

然后将这三个标志相加为一,并在每个UIViewControllerviewWillAppear中进行检查。

请检查下面的此代码。

// First create this extension to check on each value
public extension UIViewController {
func isAllVistied() -> Bool {
let a =  UserDefaults.standard.bool(forKey: "VC1") // Key used to save inside the viewController
let b =  UserDefaults.standard.bool(forKey: "VC2")
let c =  UserDefaults.standard.bool(forKey: "VC3")
if a && b && c {
return true
} else {
return false
}
}
}

用法:在每个UIViewController中使用此代码:

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UserDefaults.standard.set(true, forKey: "VC1") //Key changes based on the current viewController used in example (VC1, VC2, VC3)
}
override func viewWillAppear(_ animated: Bool) {
if self.isAllVistied() {
view.backgroundColor = .green
}
}
}

最新更新