首页 > 解决方案 > 从 UINavigationController 扩展设置导航项

问题描述

我编写了一个函数来在导航栏中间显示我的应用程序徽标,当我从 viewDidLoad() 函数调用它时它工作正常。

但是,当我尝试将它添加到 UINavigationController 扩展时,它不起作用!尽管调用了该函数,但徽标并未出现。

任何想法?

谢谢

extension UINavigationController {
    func showNavLogo(){
        let imageW = 59
        let imageH = 30
        
        let imageView = UIImageView()
        imageView.image = UIImage(named: "Logo.png")
        imageView.contentMode = .scaleAspectFit
        
        self.navigationItem.titleView = imageView
        let currWidth = self.navigationItem.titleView?.widthAnchor.constraint(equalToConstant: CGFloat(imageW))
        currWidth?.isActive = true
        let currHeight = self.navigationItem.titleView?.heightAnchor.constraint(equalToConstant: CGFloat(imageH))
        currHeight?.isActive = true
    }
}

标签: swift

解决方案


你还记得在 viewDidload 中调用 self.showNavLogo() 吗?

您的扩展意味着您有一个名为 showNavlogo 的函数,但您可能仍需要通过在 viewDidload 或 viewWillAppear 中使用 self..showNavLogo() 来调用 showlogo 方法。

还要确保您的故事板或视图控制器或笔尖映射到导航控制器,以便您的视图控制器实现您的方法。


推荐阅读