swift - 如何避免在 Swift 的 UIViewController 中再次编写相同的代码?
问题描述
我在每个 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()
}
}
推荐阅读
- c++ - 在派生类的基类构造函数中使用覆盖函数
- android - flutter 1.9.1+hotfix.2 - 构建 appbundle 失败,但实际上生成了一个 appbundle
- reactjs - Draft.js 如何表示项目列表?
- android - fetchSignInMethodsForEmail 在 TOAST 上给出一个空的电子邮件字段
- algorithm - 最宽路径问题有哪些应用?
- sql - Oracle中的日期比较出现错误的情况
- java - 如果某个应用程序处于焦点位置,则检查 Java
- python-datetime - 处理偏移天真的对象
- javascript - 谷歌云功能 - 承诺导致执行错误
- c# - 在 Xamarin.Forms 中使用通用主机生成器时谁调用了 IHost.Run?