使用导航栏或创建自定义 class 向 swift 中的每个视图添加自定义工具栏?

Add custom toolbar to every view in swift using navigation bar or creating custom class?

我想在我的应用程序的每个视图中添加一个工具栏,它非常基本,如下所示:

注意:左右项目在每个视图中都是相同的。

我想知道在每个 viewcontroller 中自定义导航栏或创建一个扩展 UIToolBar 并将其添加到每个控制器的 class 是否更好。什么是更好的做法?

根据我的说法,您应该创建 UIViewController 的扩展。它将有一个方法,该方法将包含修改该视图控制器的导航栏的代码。这样您就可以为所需的屏幕修改导航栏,并且设计非常灵活。

例如下面的扩展程序会将导航栏设置为透明,

extension UIViewController {

func setTransparentNavBar(_ target: UIViewController, leftAcion: Selector, rightAction: Selector) {
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true

    self.navigationItem.titleView = UIImageView(image: UIImage(named: "icon_2"))

    let leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_1"), style: UIBarButtonItem.Style.plain, target: target, action: leftAcion)
    //self.navigationItem.setLeftBarButton(leftBarButtonItem, animated: true)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem

    let rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_3"), style: UIBarButtonItem.Style.plain, target: target, action: rightAction)
    //self.navigationItem.setRightBarButton(rightBarButtonItem, animated: true)
    self.navigationItem.rightBarButtonItem = rightBarButtonItem
}

}

每当需要此配置时,在 viewDidLoad()

中调用此方法

希望对您有所帮助。