0

私が望むのは、UITabBar に 2 つの UITabBarItems を含めることです (それは実際には問題ではありません...)。

したがって、通常、最初のアイテムには独自の UIViewcontroller があり、2 番目のアイテムには独自の UIViewcontroller があります。しかし、各 TabBarItem が同じ UIViewcontroller インスタンスを表示することを望みます。(機能はほぼ同じですが、これら 2 つのビューコントローラー間で異なるのは 1 つのラベルのみです)

ユーザーが2番目のtabBarItemをプッシュした直後に、最後のviewControllerをtabBarItemStackの上にプッシュする必要があると思いますよね?

現時点では、2 つの UIViewcontroller を備えた StoaryBoard を使用しているため、TabBarItemStack にアクセスする方法と、次のタブがユーザーによってプッシュされたという通知をどこで受け取ることができるかがよくわかりません。

または、最初のビューをロードした後にスタックを変更し、現在のビューをスタックの 2 番目のインデックスにプッシュできますか?

誰でも理解できるように、私の問題を説明できたことを願っています;-)

よろしくお願いいたします。

4

3 に答える 3

2

この場合、UITabBar はまったく使用しません。ViewController に 2 つのタブのように見える GUI オブジェクトを作成しますが、実際には 2 つのボタンにすぎません。

それらをクリックすると、ボタンの画像を変更して、タブを切り替えたように見えるように外観を切り替えます。ただし、常に同じビューコントローラーにとどまっています。そして、その中のコンテンツを変更するだけです。

次に、メンバー変数を使用してユーザーが選択した「タブ」クラスを追跡し、どのコンテンツを表示するかを知ることができます。

UITabBar は、タブの数が不明で、タブに含まれる内容が正確にわからない場合に最も役立ちます。複数のViewControllerがある場合でも、UITabBarを使用せず、「タブのように見える」レイアウトの画像/ボタンだけを使用する方がはるかに簡単です。

于 2012-08-13T11:35:40.517 に答える
1

2 つUIViewControllerの s (それぞれに 1 つUITabBarItem) がありますが、それらは両方とも 3 つ目 (すべてのロジックを含む) から継承 (子孫) されています。そうすれば、コードを複製したり、階層をいじったりせず、バグが発生する可能性がありますか?

于 2012-08-13T10:54:17.043 に答える
0

両方の TabBar に同じ UIViewController をロードします。最初のタブバーでラベルを非表示にし、2番目のタブバーで表示する必要があると思います

viewWillAppear メソッドに次のコードを追加します。

-(void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   if(self.tabBarController.selectedIndex == 0) 
   {
      yourLabel.hidden = YES;
   }
   else if(self.tabBarController.selectedIndex == 1) 
   {
      yourLabel.hidden = NO;
   }
}
于 2012-08-13T10:54:07.067 に答える