1

MonoTouch 5.4在新版本XCodeiOS6.0上使用

TabBarController 代码中的旧ViewController:

this.TabBarItem.BadgeValue = "5";

不再工作。

新代码,改成这个确实有效:

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

不工作是指徽章没有出现,在旧情况下该值被忽略。

4

1 回答 1

0

我认为这是正常的。也许您的代码在更新之前已更改/重构?

TabBarItem在此视图控制器的标签栏项目中定义UIViewController并表示。

这个视图控制器this.TabBarItem的标签栏项目也是如此,例如我在我的代码中使用了 a (我们称之为它)。UITabBarControllerparent

this.TabBarController.TabBar.Items[x]将代表this的其中一个视图控制器的选项卡栏项 parent

因此,当我创建child1and 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

所以我可以这样做:

child1.TabBarItem.BadgeValue = "5"; // or
parent.TabBar.Items[0].BadValue = "5";

获得相同的行为。但是,更改在parent.TabBarItem任何地方都不会可见(至少在我RootViewController的测试应用程序的情况下不是)。

于 2012-09-15T00:17:21.950 回答