3

UIViewContoller と UIView をいつ使用するかに関して、いくつかの優れた回答があります。たとえば、ここここ.

一般的な要点は、データの全画面を制御するために UIVIewController を使用する必要があるということです。

  1. 回転を処理するように設計されています。回転が発生したことが通知されるのは最新の UIViewController だけなので、一度に 1 つの UIViewController だけを画面に表示する必要があります。

  2. MVC パラダイムに忠実であり続けるには、ビジネス ロジックを UIViewController に配置し、表示ロジックと対話ロジックのみを UIView に配置する必要があります。おそらくビジネス ロジックは、画面全体に表示される内容に関連しています。

私の質問は、これを踏まえて、いくつかのトップレベル ビュー間で左右のページングを使用してアプリを構成するにはどうすればよいですか?

レシピのリストを保持するいくつかの UITableViews を持つインターフェイスを作成したいと考えています。ユーザーは左右にスワイプしてリスト間を移動します。一番下には何があっても固定されたままの共通メニューがあります。

私の最初の考えは、UIScrollView に 1 つの UIVIewController を使用し、そこからサブビューを追加することです。

ただし、各リストに独自の UIViewController を持たせて、独自のローテーションを処理し、独自の REST メソッドのようにビジネス ロジックを保持できるようにしたいと考えています。最上位の UIViewController で子サブビューの回転を処理するのは面倒に思えますし、ロジックを別の場所に配置するのは MVC に違反しているように思えます。

複数の UIViewControllers が UIScrollView 内に存在するようにアプリを構成する方法はありますか、それとも一連の最上位の UIViewControllers と UISwipeGestureRecognizer を使用して UIScrollView のページング効果をシミュレートするのが適切でしょうか?

ありがとう。

4

4 に答える 4

1

私が見る限り、2つの良いオプションがあります:

  1. スワイプジェスチャの方向に応じて、ルートUINavigationControllerとプッシュ/ポップ子ViewControllerを使用します(あなたが言ったように、UISwipeGestureRecognizerによって認識されます)。

  2. UIScrollView でルート UIViewController を使用し、スクロールビューのサブビューとして子ビューコントローラー ビューを追加します。方向の変更を処理するには、方向変更 UIViewController メソッド ( willRotateToInterfaceOrientationdidRotateFromInterfaceOrientation) を子コントローラーに渡して、それらを処理できるようにします。

お役に立てば幸いです

于 2013-10-17T20:55:11.740 に答える
1

あなたが話している要件については、UINavigationController. 必要な「左右」のページングがUIViewController提供され、各レシピに a を使用できます。

UIScrollViewまた、 「スワイプ」ジェスチャを実行できるため、を使用したいと思います。その場合はUISwipeGestureRecognizer、View Controller に を追加して、ジェスチャが認識されるたびに を呼び出しpushViewController:animated:popViewControllerAnimated:レシピ間のナビゲーションを実行することもできます。

これはただの考えです。

お役に立てれば!

于 2013-10-17T20:51:59.910 に答える