首页 > 解决方案 > 如何避免在 Swift 的 UIViewController 中再次编写相同的代码?

问题描述

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

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

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

标签: swiftuiviewcontrolleruinavigationcontrolleruinavigationbarswift5.2

解决方案


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

创建默认实现协议:

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

推荐阅读