2

タイトルはそれをすべて説明しています。

問題は、UISegmentedControll コールバック (ボタンの押下) の処理です。ネストされたすべてのビューのコンテンツ タイプが同じ (つまり、いくつかの UITableViewControllers) である場合は、dataSource を切り替えてテーブルをリロードするだけで済みます。

ただし、これは当てはまりません。NavigationControllers に基づいてさらにドリルダウン/対話できる 3 つの非常に異なるビューがあります。

したがって、このように ATM をセットアップする方法は、すべての UINavigationController を入れる「コンテナ」クラスがあることです。それらはすべて同じ 1 つの UISegmentedController を共有し、コールバックをコンテナ ビュー コントローラにリダイレクトします。これはあまり気分が良くありません。

さらに、ユーザーがタブ バー アイコンをタップすると、ナビゲーション コントローラーが空のコンテナー ビューであるルートにポップするという問題があります。

これが私が達成したいことの写真です:

代替テキスト

4

2 に答える 2

0

私のアプリの 1 つで、3 つの個別の NSMutableArray のデータからデータが取り込まれた単一のテーブル ビューを使用しています。cellForRowAtIndexPath で条件付きでセルの内容を設定し、numberOfRowsInSection で条件付きで 3 つの異なるカウントを取得します。これは特に探しているものではありませんが、最初の例で表現されているように、3 つの異なるデータ ソースを用意する必要はありません。

あなたの本能は正しいです。複雑すぎるようです。

1 つの NavigationController を使用して、NavigationController.view で addSubview/ removeFromSuperview を交換するだけではどうですか?

于 2010-01-22T08:28:13.810 に答える
0

最近の iPad アプリケーションで同様の機能要件に遭遇しました。使用したソリューションは次のリンクにあります。基本的には、セグメント化されたコントロールの選択されたインデックスに基づいてサブビューを追加/削除する「管理」ビュー コントローラーを実装しました。 、イベントの正しい処理。

「管理」View ControllerをパラメーターとしてサブビューView Controllerに渡し、それらのコントローラーを親にコールバックさせてNavigation Stackにプッシュすることで、Navigation Controllerの問題を解決しました。

このソリューションで特に気に入っているのは、各セグメントの対応するビューのコードを個別に保持できることです。オーバーロードされた 1 つのビュー コントローラー内でごちゃごちゃになることはありません。

詳細はこちら: UISegmentedControl のベスト プラクティス

良い質問仲間です。お役に立てば幸いです。

于 2010-05-24T01:37:30.453 に答える