5

UITabBarItemからを削除するにはどうすればよいUITabBarですか?

UITabBarGoogle 検索や、UITabBarController、または のドキュメントから何も見つからなかったため、何も試していませんUITabBarItem

前もって感謝します!:)

4

3 に答える 3

9

UITabBarにはアイテムのNSArrayコレクションがあります。items プロパティはNSMutableArrayではなく NSArray であるため、削除するオブジェクトを含まない既存の NSArray から新しい NSArray を構築し、items プロパティを新しい配列に設定する必要があります。

/* suppose we have a UITabBar *myBar, and an int index idx */
NSMutableArray *modifyMe = [[myBar items] mutableCopy];
[modifyMe removeObjectAtIndex:idx];
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe];
[myBar setItems:newItems animated:true];
于 2010-10-27T20:04:56.693 に答える
4

コントローラーに属する tabBar を変更しようとする場合、 Mike Caron のアドバイスは例外をスローします。

iOS 3.0 以降では、タブ バー コントローラー オブジェクトに関連付けられている場合、このクラスのメソッドとプロパティを使用してタブ バーを変更しようとしないでください。この方法でタブ バーを変更すると、例外がスローされます。代わりに、タブ バーまたはその項目に対する変更は、タブ バー コントローラー インターフェイスを介して行う必要があります。タブ バー コントローラーに関連付けられていないタブ バー オブジェクトを直接変更することもできます。

この場合self.tabBarItem=nilは削除します。

于 2011-01-10T06:55:42.487 に答える
0

注: これは iOS 11 では機能しないようです。iOS 10 でも問題なく動作しました。

私の意見では、これは適度に恐ろしい答えです。ヒューマンインターフェイスのガイドラインを覆しているためでもありますが、それでも問題なく動作しているようです。

UITabBar *oldbar = self.tabBarController.tabBar;
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)];
NSMutableArray *olditems = [[oldbar items] mutableCopy];
[olditems removeObjectAtIndex:0];
NSArray *newitems = [[NSArray alloc] initWithArray:olditems];
[newbar setItems:newitems animated:false];
[oldbar addSubview:newbar];

これにより、古いタブバーの上にきれいにレイヤーが配置され、その機能が維持されます。

于 2013-02-16T23:35:28.517 に答える