MonoTouch:TabItem BadgeValue

时间:2012-09-14 18:47:32

标签: ios xamarin.ios uitabbarcontroller badge

在新MonoTouch 5.4XCode 6.0

上使用iOS

ViewController在TabBarController代码中:

this.TabBarItem.BadgeValue = "5";

不再有效。

新代码,更改为此功能确实有效:

this.TabBarController.TabBar.Items[theIndexOfTab].BadgeValue = "5";

不工作我的意思是徽章没有出现,旧的情况下只会忽略该值。

1 个答案:

答案 0 :(得分:0)

我认为这很正常。也许你的代码在更新之前被更改/重构了?

TabBarItemUIViewController中定义,代表视图控制器的标签栏项

因此this.TabBarItem是此视图控制器的标签栏项,例如我在代码中使用了UITabBarController(我们称之为parent)。

this.TabBarController.TabBar.Items[x]代表 parent视图控制器之一的标签栏项

因此,当我创建child1child2UIViewController的两个实例)并将其分配给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}})。