繁体   English   中英

如何避免在 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时,我该怎么做才能不必编写这段代码?

1.使用 BaseViewController 等基础 UIViewController 并将此代码放入 viewDidLoad 并用 BaseViewController 替换 UIViewController。

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

您可以使用 AOP 框架,如 Aspects。

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

创建默认实现协议:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM