【问题标题】:Set Tab Bar image at runtime在运行时设置标签栏图像
【发布时间】:2019-08-30 11:47:00
【问题描述】:

我希望在运行时将标签栏项目的图像更改为新图像,以更新不同的视图。

有什么办法可以做到吗?

我已经挣扎了几个小时,所以任何帮助都将不胜感激。

Swift 4.2 Xcode 10.1

编辑:

我尝试在我的 VC 中通过 viewDidLoad 中的 self.tabBarController?.tabBar.items?[0].image 进行设置。我已经尝试对 TabBarController 进行子类化并通过那里进行设置,但我无法获得我所追求的运行时行为。

更清楚地说,我对当前选中和未选中的名为“globe”的图像感到满意,但我想听一个名为“truth”的变量,当真相为真时,我想更改未选中的图像到“globe_red”。

在应用程序运行时更改图像的行为让我很苦恼!

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 非常抱歉,我记不清了。我尝试通过视图控制器本身设置它,通过 TabBarController 都无济于事。现在将编辑我的帖子。

标签: swift xcode


【解决方案1】:

您可以使用以下代码更改tabBar的图像。

self.tabBarController?.tabBar.items?[0].image = #imageLiteral(resourceName: "img")

selectedImage

self.tabBarController?.tabBar.items?[0].selectedImage = #imageLiteral(resourceName: "img")

代替items 中的0,您可以将索引用于选定的tabBar。

【讨论】:

  • 我在 VC 的 viewDidLoad 中尝试了 self.tabBarController?.tabBar.items?[0].image = UIImage(named: "globe_red"),但没有成功。
  • 确保视图控制器嵌入了tabBar。
  • 是的,我的视图控制器嵌入了一个标签栏控制器。
  • 我可以从打印实例中看到上述方法确实改变了图像,但它并没有显示在应用程序上。有什么想法吗?
  • 确保资产中的图像选择为原始图像以进行渲染。
【解决方案2】:

好的,我修好了!

  • 子类 UITabBarController

  • 在您的子类的 viewDidLoad 中,将 self.tabBar.items?[0].image 和 self.tabBar.items?[0].selectedImage 设置为您想要的图像。这里我设置了第一个 VC 的标签栏项目,但是你可以设置任何索引或循环并设置所有。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多