无法在 App Delegate (Swift) 中更新 titleView 图像

Posted

技术标签:

【中文标题】无法在 App Delegate (Swift) 中更新 titleView 图像【英文标题】:Can't update titleView image in App Delegate (Swift) 【发布时间】:2016-03-11 20:47:27 【问题描述】:

我希望在我的应用中出现一个徽标。我的整个应用程序都有一个嵌入式导航控制器,所以我想我可以像这样在应用程序委托中设置这个图像:

let logo = UIImage(named: "logo")
        let imageView = UIImageView(image:logo)
        UINavigationBar.appearance().topItem?.titleView = imageView

但它似乎不起作用。是不是我做错了什么?

【问题讨论】:

为什么你认为它不起作用?你期待看到什么,你看到了什么?如果我们必须猜测什么不起作用,那么您不太可能得到有用的答案。 您正在某个特定时刻更改topItemtitleView。只要您从导航控制器堆栈中推送或弹出视图控制器,topItem 就会发生变化。 嘿乔纳 图像根本没有显示。 @Jonah,谢谢 Jonah,但有没有办法为所有导航控制器设置全局设置?我可以更改它的背景颜色。 【参考方案1】:

您无法使用appearance() API 实现此目的。

相反,您必须为每个控制器的导航项的标题视图提供一个图像视图,或者您可以将UINavigationBar 子类化以添加一个始终存在的图像视图,而不管导航项中有什么。然后将所有控制器的标题设置为 nil/空字符串。

【讨论】:

以上是关于无法在 App Delegate (Swift) 中更新 titleView 图像的主要内容,如果未能解决你的问题,请参考以下文章

App.Delegate 从 ViewController 到 TabController Swift 5

从 App Delegate (Swift) 调用 ViewControllers 方法或 Segue

App Delegate 中 Core Data 堆栈变量中的 Swift 语法歧义

Google Sign In 调用 App Delegate 中的方法后关闭 View Controller (iOS / Swift)

无法从 App Delegate 呈现视图控制器

Swift 4 Delegate 在 childViewController 中不起作用