質問

私は面白い状況に走ってきた、私は3 UITableViewController sがそれぞれ(あなたはそれがフィルタリングの問題だと言うことができます)多かれ少なかれ同じデータを表示してiPhoneアプリを持っています。これまでに私はさらにUINavigationController sは上のボタンのためにUITabBarController内部にあったが、それ自身のコントローラで、このための3つの個別ニブ、それぞれを持っています。

は、今すぐアプリを最適化し、それは足跡だ減らすために、私は1つの共通のコントローラ(UITabBarItem)へのすべてのロジックをパックし、所定の位置に一つだけNIBを残しました。一般的なコントローラは、データをフィルタリングし、正しいデータを指しているの世話をするでしょう。

だから、私はナビゲーションコントローラの3にある[同じの共通のコントローラをロードします:

navControllerA = [[UINavigationController alloc] initWithRootViewController: commonTableController];

UIWindowこれらのナビゲーションコントローラを追加しました:

navigationControllersArray = [NSArray arrayWithObjects: navControllerA, navControllerB, navControllerC, nil];
[tabController setViewControllers:[NSArray arrayWithArray:navigationControllersArray]];

これで、すべてのタブの表示は、結構です、テーブルビューが表示します。あなたは次の手を触れUITabBarし、以前のものに戻すしかし、一度<=>あなたはそれだけの場所で<=>を見ることができ、表示されません。 <=>が最後に触れただけのために表示されたまま<=>。

私は認識していないよビューローディング機構<=>のいくつかの種類がありますか?

役に立ちましたか?

解決

各ビューコントローラは一つだけナビゲーションコントローラのスタックにすることができ、そしてそれは、スタック上のいくつかの場所ですることはできません。

あなたが本当に一つだけのビューコントローラを使用してメモリを節約したい場合は、

、私の代わりにタブバーコントローラを使用しての、あなただけのタブバーのビューを使用し、そのデリゲートとしてあなたルートビューコントローラを設定することをお勧めします。ルートビューコントローラは、直接タブバーのイベントを解釈し、それに応じてフィルタリングを変更します。

他のヒント

あなたが本当に1つのビュー内のデータ・セットを切り替えたい場合は、より良いアプローチは、ツールバーではなく、タブバーを使用することであろうように、

、それはそうです。タブバーは、他のすべてのポスターが述べたように、すべてのビュー1つのビューと1つのナビゲーションコントローラの子である必要はありビューの切り替えについてです。データセットがはるかに意味をなすか、あるいは(あなたは三つの要素を持っているし、あなたが唯一の最大3つのセグメントを持つことができるので)もうまくいくでしょうUISegmentedControlを使用して切り替えるには、この単一のコントローラを呼び出し、タブバーを持っています。

UINavigationController内UITabbarControllerを使用することはサポートされていません。あなたは、スタックを表示するためにプッシュすることができUITabbbarControllerを模倣するために、通常のUIViewControllerを書くことができます。この SO質問

scroll top