Swift 在导航栏上只设置一次图像
我有一个带有多个ViewController的应用程序,我必须在导航栏的标题中显示一个图像,我已经有了这个代码Swift 在导航栏上只设置一次图像,swift,uiimage,uinavigationbar,Swift,Uiimage,Uinavigationbar,我有一个带有多个ViewController的应用程序,我必须在导航栏的标题中显示一个图像,我已经有了这个代码 public func carregarLogoNav() -> Void { let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38)) imageView.contentMode = .scaleAspectFit let image = UIImage(n
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()
如果希望在所有视图控制器中都具有相同的
标题视图
,则可以将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
}
这样,您的设置代码只存在一次。它只是从其他地方调用的。如果您希望在所有视图控制器中都有相同的
标题视图
,则可以将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
}
这样,您的设置代码只存在一次。它只是从其他地方调用的。如果我只需要一次,这对我来说是完美的,但是这个方法有效,谢谢。另一个选项是创建
UIViewController
的子类,并让它的viewDidLoad
设置标题视图。然后,所有视图控制器都需要扩展该自定义视图控制器。但是,如果您还需要表视图控制器或集合视图控制器等,您就回到了开始的位置。如果我只需要一次,这对我来说将是完美的,但是这个方法有效,谢谢。另一个选项是创建UIViewController
的子类,并让它的viewdiload
设置titleView
。然后,所有视图控制器都需要扩展该自定义视图控制器。但是,如果您还需要表视图控制器或集合视图控制器等,那么就回到了开始的位置。