更改所有类的所有视图控制器的背景颜色(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)的主要内容,如果未能解决你的问题,请参考以下文章

从一个视图控制器更改项目中所有视图的背景颜色?

如何使用 swift 在一个视图控制器中更改状态栏颜色?

UITableViewCell 选择样式更改所有子视图的背景颜色

iOS Swift - 如何更改表格视图的背景颜色?

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

iOS 为所有视图控制器 self.view 设置背景颜色