Swift 如何从单个文件自定义NavigationBar?

Swift 如何从单个文件自定义NavigationBar?,swift,Swift,我想让我的应用程序中的所有导航栏都使用一个文件进行配置。我创建了一个文件UINavCon.swift,它定义了一个类UINavCon,该类继承自UINavigationController,然后设置导航栏的自定义设置。现在,在我的另一个类(继承自uitabarcontroller和uitabarcontrollerdelegate)中,我正在运行此代码以创建导航控制器,但没有显示自定义设置: let trackerNavCon = UINavCon.init(rootViewController

我想让我的应用程序中的所有导航栏都使用一个文件进行配置。我创建了一个文件
UINavCon.swift
,它定义了一个类
UINavCon
,该类继承自
UINavigationController
,然后设置导航栏的自定义设置。现在,在我的另一个类(继承自
uitabarcontroller
uitabarcontrollerdelegate
)中,我正在运行此代码以创建导航控制器,但没有显示自定义设置:

let trackerNavCon = UINavCon.init(rootViewController: TrackerViewController())
let trackerTabItem = UITabBarItem(title: "Tracker", image:  UIImage(systemName: "plus.app.fill"), tag: 1)
trackerNavCon.tabBarItem = trackerTabItem
// ...
self.viewControllers = [homeVC, trackerNavCon, historyVC]
如何使自定义项显示


注意:我使用的是Swift 5,没有故事板和SwiftUI。

您可以进行扩展并相应地自定义功能。您还可以在主题函数中添加各种参数

import UIKit

extension UINavigationController : UIGestureRecognizerDelegate {

   open override func viewDidLoad() {
    super.viewDidLoad()
   }

   open override func awakeFromNib() {
       themeNavigation()
   }

   func themeNavigation() {
       self.navigationBar.barTintColor = .red
   }
}

为什么不使用外观代理?@matt我不知道那种方法。现在我知道我可以将自定义设置放入SceneDelegate,但是有没有办法将自定义设置保存在自己的文件中?太好了,非常感谢。欢迎@adamcircle