UINavigationBar setBackgroundImage в AppDelegate с Swift

Я пытаюсь установить фоновое изображение на панель навигации глобально в делегате приложения в Swift. Я могу заставить его работать на отдельном контроллере представления следующим образом:

var topBar: UINavigationBar!

topBar.setBackgroundImage(UIImage(named: "navbar"), forBarMetrics:
.Default)

Но когда я пытаюсь добавить следующее в App Delegate, он вылетает с необработанным исключением:

UINavigationBar.appearance().setBackgroundImage(UIImage(named:
"navbar"), forBarMetrics: .Default)

person mrcrowley    schedule 03.11.2014    source источник
comment
Проверьте, есть ли у вас набор изображений с именем navbar в ваших ресурсах изображений.   -  person Dănuț Mihai Florian    schedule 04.11.2014
comment
Что является исключением?   -  person nickgraef    schedule 04.11.2014
comment
Другая причина, по которой это может не работать, может заключаться в том, что у вас нет контроллера навигации в качестве начального контроллера представления.   -  person Dănuț Mihai Florian    schedule 04.11.2014
comment
У меня есть набор изображений с именем navbar.   -  person mrcrowley    schedule 04.11.2014


Ответы (2)


Хорошо, я удалил панели навигации и добавил новые в раскадровку... теперь это работает только с кодом App Delegate. Думаю, это просто Xcode 6/Swift с ошибками.

person mrcrowley    schedule 04.11.2014

Просто добавьте эти две строки в делегирование приложения

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

let navBackgroundImage:UIImage! = UIImage(named: "navbar.png")

UINavigationBar.appearance().setBackgroundImage(navBackgroundImage, for: .default)}
person M Murteza    schedule 28.07.2020