Установить изображение только один раз на NavigationBar Swift - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть приложение с несколькими 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, но она также не работает * 1006.*

anotherViewController().carregarLogoNav()

1 Ответ

0 голосов
/ 18 сентября 2018

Если вы хотите иметь одинаковые 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
}

Таким образом, ваш код настройки находится только в одном месте.Он просто вызывается из других мест.

...