swift - 从 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
}
}
解决方案
你还记得在 viewDidload 中调用 self.showNavLogo() 吗?
您的扩展意味着您有一个名为 showNavlogo 的函数,但您可能仍需要通过在 viewDidload 或 viewWillAppear 中使用 self..showNavLogo() 来调用 showlogo 方法。
还要确保您的故事板或视图控制器或笔尖映射到导航控制器,以便您的视图控制器实现您的方法。