当用户不按特定顺序访问所有三个视图控制器时。我希望这个程序中的所有视图控制器都变为绿色。但前提是所有三个班都参观过。我不知道这是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
保存一个标志。
然后将这三个标志相加为一,并在每个UIViewController
的viewWillAppear
中进行检查。
请检查下面的此代码。
// 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
}
}
}