在Navigation Bar Swift上只设置一次图像

问题描述 投票:0回答:1

我有一个带有几个ViewControllers的应用程序,我必须在导航栏的标题中显示一个图像,我已经有了这个代码来完成它。

public func carregarLogoNav() -> Void {
    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
    imageView.contentMode = .scaleAspectFit
    let image = UIImage(named: "logo-simples.png")
    imageView.image = image
    navigationItem.titleView = imageView
}

但我想知道是否可以将此图像复制到所有其他视图,而无需在每个视图中粘贴此代码。

另一种方法是在另一个ViewController中调用此函数,但它也无法正常工作

anotherViewController().carregarLogoNav()
swift uiimage uinavigationbar
1个回答
2
投票

如果您希望在所有视图控制器中使用相同的titleView,那么您可以将carregarLogoNav函数放在扩展中,然后从每个视图控制器的viewDidLoad调用它:

extension UIViewController {
    public func setupCarregarLogoNav() {
        let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
        imageView.contentMode = .scaleAspectFit
        let image = UIImage(named: "logo-simples.png")
        imageView.image = image
        navigationItem.titleView = imageView
    }
}

然后在每个视图控制器中:

override func viewDidLoad() {
    super.viewDidLoad()

    setupCarregarLogoNav()

    // any other code
}

这样您的设置代码只在一个地方。它只是从其他地方打来的。

© www.soinside.com 2019 - 2024. All rights reserved.