UITabBarItem を削除する
-
26-09-2019 - |
質問
どうすれば削除できますか UITabBarItem
から UITabBar
?
Google 検索やドキュメントからは何も見つからなかったので、何も試していません。 UITabBar
, UITabBarController
, 、 または UITabBarItem
.
前もって感謝します!:)
解決
UITタブバー 持っています NSArray アイテムのコレクション。items プロパティは NSArray であり、 NSMutableArray, 場合は、削除するオブジェクトが含まれていない既存の 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];
他のヒント
マイク・キャロンのアドバイスは、例外がスローされますのあなたは、コントローラに属しているタブバーを変更する場合。
のiOS 3.0以降では、あなたはいけません メソッドを使用しようとすると、 このクラスのプロパティを変更するには それが関連付けられているタブバー タブバーコントローラオブジェクト。変更 この方法の結果でタブバー 例外のスローします。代わりに、任意の タブバーやその修正に アイテムは、タブバーを介して行わなければなりません コントローラインタフェース。あなたはまだかもしれません 直接ことをタブバーのオブジェクトを変更 タブバーに関連付けられていません コントローラ
この場合self.tabBarItem=nil
は、それを削除します。
注: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];
の層がそれきれいに古いタブバーの上に、それがその機能を維持します。
それ