在新MonoTouch 5.4
和XCode
6.0
iOS
旧 ViewController在TabBarController代码中:
this.TabBarItem.BadgeValue = "5";
不再有效。
新代码,更改为此功能确实有效:
this.TabBarController.TabBar.Items[theIndexOfTab].BadgeValue = "5";
不工作我的意思是徽章没有出现,旧的情况下只会忽略该值。
答案 0 :(得分:0)
我认为这很正常。也许你的代码在更新之前被更改/重构了?
TabBarItem
在UIViewController
中定义,代表此视图控制器的标签栏项。
因此this.TabBarItem
是此此视图控制器的标签栏项,例如我在代码中使用了UITabBarController
(我们称之为parent
)。
this.TabBarController.TabBar.Items[x]
代表此 parent
的子视图控制器之一的标签栏项。
因此,当我创建child1
和child2
(UIViewController
的两个实例)并将其分配给parent.ViewControllers
时,我们会得到三个UITabBarItem
个实例(一个用于2012-09-14 20:13:24.092 test1[47917:1507] parent.TabBarItem.Handle = 291086496
2012-09-14 20:13:24.094 test1[47917:1507] parent.TabBar.Items [0].Handle = 218412640
2012-09-14 20:13:24.094 test1[47917:1507] parent.TabBar.Items [1].Handle = 160885040
2012-09-14 20:13:24.095 test1[47917:1507] child1.TabBarItem.Handle = 218412640
2012-09-14 20:13:24.096 test1[47917:1507] child2.TabBarItem.Handle = 160885040
父母,每个孩子一个) - 但只有两个(儿童将永远可见)。
E.g。记录句柄值
child1.TabBarItem.BadgeValue = "5"; // or
parent.TabBar.Items[0].BadValue = "5";
所以我可以这样做:
parent.TabBarItem
获得相同的行为。但是,更改RootViewController
在任何地方都不会显示(至少在我的情况下,这不是我的测试应用程序的{{1}})。