我在每个UIViewController中编写以下代码:
var navBar = self.navigationController?.navigationBar
navBar?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
我不想在创建的每个UIViewController
中写这些。我很懒,我不想重复自己。我无法在extension
中添加它。那么创建UIViewController
时我不必写这段代码怎么办?
答案 0 :(得分:1)
1。使用基本的UIViewController(例如BaseViewController)并将此代码放入viewDidLoad中,并用BaseViewController替换UIViewController。
2。您可能不想对UIViewController做任何事情。然后,您可能会遇到术语AOP。例如Java经常使用AOP。
您可以使用Aspects之类的AOP框架。
答案 1 :(得分:0)
在这种情况下,您可以使用默认的实现协议。
创建默认实施协议:
import Foundation
import UIKit
protocol TitleSetupable: AnyObject {
func setupTitle()
}
extension TitleSetupable where Self: UIViewController {
func setupTitle() {
var navBar = self.navigationController?.navigationBar
navBar?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
}
}
在您的ViewController中使用:
class YourViewController: UIViewController, TitleSetupable {
override func viewDidLoad() {
super.viewDidLoad()
setupTitle()
}
}