• 締切済み

【iPhoneアプリ開発】UiTabbarを条件によって切り替えたい。

【iPhoneアプリ開発】UiTabbarを条件によって切り替えたい。 UiTabbarをA条件ではメニューが5個、B条件ではメニューが3個といった機能を実装したいのですが、 そういったことは可能でしょうか。 もしよろしければ、具体的方法を教えてください

みんなの回答

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

もちろん可能ですよ。 UIButton「Set 5」、「Set 7」を作り、どちらも「- (IBAction)setToolBarItems: (id)sender」というアクションを送るようにInterface Builderで作成します。 UITabBar「tabBar」に対し、アイテム数を変化させるメソッドを作ります。 アイテムを5個、7個に切り替えます。 - (IBAction)setToolBarItems: (id)sender { UIButton *btn = (UIButton *)sender; UITabBarItem *item0 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemMore tag: 0] autorelease]; UITabBarItem *item1 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemFavorites tag: 1] autorelease]; UITabBarItem *item2 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemRecents tag: 2] autorelease]; UITabBarItem *item3 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemContacts tag: 3] autorelease]; UITabBarItem *item4 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemBookmarks tag: 4] autorelease]; UITabBarItem *item5 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemSearch tag: 5] autorelease]; UITabBarItem *item6 = [[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemMostRecent tag: 6] autorelease]; NSArray *itemsArray; if ([btn.currentTitle isEqualToString: @"Set 5"]) { itemsArray = [NSArray arrayWithObjects: item0, item1, item2, item3, item4, nil]; [tabBar setItems: itemsArray animated: YES]; } else { itemsArray = [NSArray arrayWithObjects: item0, item1, item2, item3, item4, item5, item6, nil]; [tabBar setItems: itemsArray animated: YES]; } }

aonokaze
質問者

お礼

harawoさん ご回答いただきありがとうございます。 このコードなら理解できそうです。 近日中に試してみます! 取り急ぎ御礼まで。

aonokaze
質問者

補足

harawoさん こんにちは。 教えていただきました、ソースをもとに自分なりにやってみたのですが、 エラーが出てしまい、どうしても切り替えができません。 「- (IBAction)setToolBarItems: (id)sender」に「Set 5」タイトルのボタンをxib上で関連づけ、ボタンを押すと・・ 'NSInternalInconsistencyException', reason: 'Directly modifying a tab bar managed by a tab bar controller is not allowed.' なんてエラーがでて怒られてしまいます。 実装の仕方等が悪かったのかもしれません。 エラーの内容で検索してみたのですが、英語のドキュメントばかりでさっぱり・・・ もし、対処法をご存知でしたら、教えていただけませんでしょうか。

関連するQ&A