これは正常だと思います。たぶんあなたのコードは更新前に変更/リファクタリングされましたか?
TabBarItem
で定義され、このViewControllerのタブバーアイテムをUIViewController
表します。
このViewControllerthis.TabBarItem
のタブバーアイテムも同様です。たとえば、コードでaを使用しました(これを呼び出しましょう)。UITabBarController
parent
this.TabBarController.TabBar.Items[x]
これの子ビューコントローラの1つのタブバーアイテムを表します。 parent
したがって、child1
とchild2
(の両方のインスタンスUIViewController
)を作成して割り当てると、parent.ViewControllers
3つのインスタンス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
私のテストアプリケーションの場合はそうではありません)。