如何避免在 Swift 中的 UIViewController 中再次编写相同的代码?



我在每个UIViewController中都有以下代码:

var navBar = self.navigationController?.navigationBar
navBar?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

我不想在我创建的每UIViewController中都写这些。我很懒,我不想重复自己。我无法将其添加到extension.那么,当我创建UIViewController时,我该怎么做才能不必编写这段代码呢?

1.使用基本 UIViewController(如 BaseViewController(,并将此代码放入 viewDidLoad 中,并将 UIViewController 替换为 BaseViewController。

2.你可能不想对UIViewController做任何事情,然后,你可能会遇到AOP这个术语,例如Java经常使用AOP。

您可以使用像Aspects这样的AOP框架。

在这种情况下,您可以使用默认实现协议。

创建默认实现协议:

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]
}
}

在视图控制器中使用:

class YourViewController: UIViewController, TitleSetupable {
override func viewDidLoad() {
super.viewDidLoad()
setupTitle()
}
}

相关内容

  • 没有找到相关文章

最新更新