1

MonoTouch 5.4新規XCodeおよびiOS6.0での使用

TabBarControllerコードの古いViewController:

this.TabBarItem.BadgeValue = "5";

動作しなくなりました。

新しいコード、これに変更すると機能します:

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

動作しないということは、バッジが表示されないことを意味します。古い場合、値は無視されます。

4

1 に答える 1

0

これは正常だと思います。たぶんあなたのコードは更新前に変更/リファクタリングされましたか?

TabBarItemで定義され、このViewControllerのタブバーアイテムUIViewController表します。

このViewControllerthis.TabBarItemのタブバーアイテムも同様です。たとえば、コードでaを使用しました(これを呼び出しましょう)。UITabBarControllerparent

this.TabBarController.TabBar.Items[x]これのビューコントローラの1つのタブバーアイテムを表します。 parent

したがって、child1child2(の両方のインスタンスUIViewController)を作成して割り当てると、parent.ViewControllers3つのインスタンスUITabBarItem(親用に1つ、子ごとに1つ)が取得されますが、そのうちの2つだけです(子は表示されます)。

例:ハンドル値のログから

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 に答える