изменить цвет фона всех контроллеров представления, если все классы вызваны (swift4) - PullRequest
0 голосов
/ 22 ноября 2018

Когда пользователь посещает все три контроллера вида в произвольном порядке.Я хочу, чтобы все контроллеры представления в этой программе стали зелеными.Но только если все три класса посещены.Я не знаю, является ли это 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 Ответ

0 голосов
/ 22 ноября 2018

UserDefaults Подойдет для этого, сохранив флаг для каждого UIViewController в его функции viewDidLoad.

Затем сложите эти три флага в один и отметьте их в viewWillAppear в каждом UIViewController.

Проверьте этот код ниже.

// 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
        }
    }
}
...