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

How to avoid writing same code over again in UIViewController in Swift?

我在每个 UIViewController 中编写了以下代码:

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

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

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

创建默认实现协议:

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()
    }
}

1.Use 一个基本的 UIViewController,例如 BaseViewController,并将此代码放在 viewDidLoad 中,并将 UIViewController 替换为 BaseViewController。

2.You 可能不想对 UIViewController.Then 做任何事情,您可能会遇到术语 AOP.for 示例 Java 经常使用 AOP。

可以使用Aspects等AOP框架。