![](/img/trans.png)
[英]Swift: How to return to the same instance of my 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.