1

私がやりたいことを実行するには、UITabBar、UITabBarController、およびナビゲーション コントローラーをまだ十分に理解していないようです。誰かが何らかのガイダンスを提供できることを願っています。

私は合計 8 つの VC を持っています。これらのうち 5 つを最初の (起動) 画面の TabBar から選択できるようにしたいと思います。どの項目を選択しても、特定の VC が読み込まれます。VC が選択されると、それが読み込まれます。潜在的な宛先として、合計 8 つのオプションのうち約 5 つの異なるセットが必要です。他の誰でも同じです。

したがって、特定の VC には独自の TabBar が必要であり、8 つの VC のいずれかを持つことができます。基本的には、ユーザーがルート VC に戻ることなく、タブ バーを使用して 1 つの VC から次の VC に切り替えることができるようにしたいと考えています。

起動画面で tabbarcontroller を使用して、最初に必要なビューをロードする方法については、ある程度明確です。しかし、ロードされた VC が ITS タブ バーで可能な VC の別の選択を必要とする場合、これをどのように設定するのでしょうか?

要約すると、私は持っています

ルートVCには次の選択肢があります

VC-A
VC-B
VC-C
VC-D
VC-D

VC-A を選択した場合、VC-A から次の選択肢があります。

VC-C
VC-D
VC-E
VC-F

VC-B を選択した場合、VC-B から次の選択肢があります

VC-A
VC-C
VC-D
VC-E
VC-R

等々。

これらの選択肢はすべて、UITabBar または UITabBarController に基づいて設定したいと思います。各 VC は大量のメモリを必要とする可能性があるため、たとえば、VC-B が VC-D を選択した場合、VC-B を破棄できる (または、必要に応じて再ロードされるために、少なくともその実装の一部を削除できる) ことも心配しています。 ) メモリを節約するため (必要に応じて再インスタンス化)。

遅いです。私がやろうとしていることを十分に説明できたことを願っています。また、NIB を使用していません。すべてがプログラムでコーディングされています。

誰でも提供できるヘルプを事前に感謝します。私はあらゆる提案を受け入れます。

4

3 に答える 3

2

これを試して

UITabBarController *tabBar = [[UITabBarController alloc]init];
UINavigationController*  nav1=[[UINavigationController alloc]init];
UINavigationController*  nav2=[[UINavigationController alloc]init];
UINavigationController*  nav3=[[UINavigationController alloc]init];

FirstVC  *ObjFirstVC = [[FirstVC alloc] init];
nav1.viewControllers=[NSArray arrayWithObjects:ObjFirstVC, nil];
nav1.tabBarItem.title=@"First";

SecondVC  *ObjSecondVC = [[SecondVC alloc] init];
nav2.viewControllers=[NSArray arrayWithObjects:ObjSecondVC, nil];
nav2.tabBarItem.title=@"Second";

ThirdVC  *ObjThirdVC = [[ThirdVC alloc] init];
nav3.viewControllers=[NSArray arrayWithObjects:ObjThirdVC, nil];
nav3.tabBarItem.title=@"Third";

tabBar.viewControllers=[NSArray arrayWithObjects:nav1,nav2,nav3,nil];
于 2013-07-05T08:26:22.013 に答える
2

最善のアプローチは、単一の を使用することだと思いますUITabBarController。最初の 5 つの VC で初期化し、デリゲートを設定します。を実装するUITabBarControllerDelegate必要がありますtabBarController:didSelectViewController:。そのデリゲート メソッド内で、UITabBarController選択された VC に応じて VC が更新され、選択された VC に関連する VC のみが表示されます。

一方、私はそれに対して強くお勧めします。このようなナビゲーション構造は、ユーザーにとって非常に複雑に見えます。構造を単純化することで、より優れたアプリを作成できるかもしれません。

于 2013-07-05T08:35:04.030 に答える
1

必要なのは、各UITabBarControllerタブ セット a UINavigationController(ストーリーボードでこれを簡単に実行できます) として、ルートUINavigationControllerビュー コントローラー (ユーザーが初めてタップしたときに表示する最初のビュー コントローラー) をセットすることです。そのタブ)。

上記の提案を完了すると、5 つのタブ バーと 5 つUINavigationControllesのルート ビュー コントローラーが作成され、各タブ (プッシュ/ポップ) に好きなナビゲーションを定義できるようになります。

于 2013-07-05T07:59:20.400 に答える