【问题标题】:Crash when setting badge on tab bar in objective C在目标 C 的标签栏上设置徽章时崩溃
【发布时间】:2018-10-30 11:17:50
【问题描述】:

这行代码崩溃了。如何检查 tabor 项是否不为零然后设置徽章?

[self.tabController.tabBar.items objectAtIndex:0].badgeValue = [NSString stringWithFormat:@"%i", num];

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[_CTNativeGlyphStorage tabBar]: 无法识别的选择器发送到实例 0x15029cfd0'

我通过这行代码查了一下,还是没有解决问题。

if (self.tabController.tabBar.items != nil)   { }

【问题讨论】:

  • 使用这个条件 - if(! (item == nil || item == (id)[NSNull null]) )
  • 记录 self.tabController 的值,看看它是一个实际的标签栏控制器还是别的什么。

标签: objective-c


【解决方案1】:

如果您在标签控制器出现或完全启动之前设置徽章值,那么索引 0 处不会有任何内容。出于内存使用目的,在演示时间到来之前,选项卡控制器无需启动所有内容。您可以保留对UITabBarItem 的每个实例的引用并在它们上设置徽章值。或者你将不得不等到 viewDidAppear 被调用,确保所有的 UITabBarItems 都被完全实例化......

如果没有看到您的其余代码,我不能在这里假设任何其他内容。

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 2013-12-01
    • 2017-08-23
    • 1970-01-01
    • 2018-10-31
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多