更改所有类的所有视图控制器的背景颜色(swift 4)
Posted
技术标签:
【中文标题】更改所有类的所有视图控制器的背景颜色(swift 4)【英文标题】:change background color of all view controllers if all classes are called (swift4) 【发布时间】:2018-11-22 04:53:28 【问题描述】:当用户以无特定顺序访问所有三个视图控制器时。我希望这个程序中的所有视图控制器都变成绿色。但只有当所有三个类都被访问时。我不知道这是 coredata 还是 userdefulat 的事情。
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()
【问题讨论】:
你想马上翻转颜色吗? 【参考方案1】: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
【讨论】:
这很好用。我想知道第一次触发所有类时如何变为绿色,但等于或大于 2 时变为红色。那么对于第一次击中绿色然后一旦他们都被称为再次红色?再次感谢您的帮助?以上是关于更改所有类的所有视图控制器的背景颜色(swift 4)的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 选择样式更改所有子视图的背景颜色