如何一次将更改应用于多个视图控制器?

D A*_*D A 0 xcode ios swift

什么是(例如)同时在多个View Controllers中包含一行的最佳方法(例如,在每个VC中包含ViewDidLoad下的一行代码)?

我只是在寻找一种更有效的方法,而不仅仅是在10个不同的VC中复制粘贴

Evg*_*rov 5

继承将帮助您:

class BaseViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // your settings for all view controllers here:
        self.view.backgroundColor = UIColor.lightGrayColor()
    }
}

class HomeViewController: BaseViewController {
    override func viewDidLoad() {
        super.viewDidLoad() // call code from BaseViewController.viewDidLoad()
    }
}

class ChatViewController: BaseViewController {
    override func viewDidLoad() {
        super.viewDidLoad() // call code from BaseViewController.viewDidLoad()
    }
}

class ProfileViewController: BaseViewController {
    override func viewDidLoad() {
        super.viewDidLoad() // call code from BaseViewController.viewDidLoad()
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是Swift扩展:

extension UIViewController {
    func configureView() {
        self.view.backgroundColor = UIColor.lightGrayColor()
    }
}

class HomeViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        configureView()
    }
}

class ChatViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        configureView()
    }
}

class ProfileViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        configureView()
    }
}
Run Code Online (Sandbox Code Playgroud)

更多关于Swift书中的继承扩展