1

これは、私のデバイスにあるビューのスクリーンショットです。

iPadのスクリーンショット

ここで私が抱えている設計上の問題は、画面の上部が常に静的であることです。その配置に関してです。画面の残りの部分は、プログラムによってこのビューに追加されたボタンの行です。矢印は、4 方向 (上から、下から、左から、右から) にスワイプできるという考えを表しています。これにより、画面に新しいビューがアニメーション表示されます。このビューは、その前のビューと同じインスタンスです。実際、これらのビューはすべて同じインスタンスですが、ボタンは異なります (ここではあまり詳しく説明しません)。

私の設計では、現在、事前にビューを事前にロードする必要があります。各ビューの各ボタンのデータはコア データになります。閲覧数は事前にわかりません。1 つのビューには、右からスワイプできる右のビューがあり、そのビューには上下の矢印がある場合があります。これにより、下または上からスワイプして別のビュー (同じ UIView サブクラス) にすることができます。したがって、基本的にはビューのツリーです。

私は自分の選択肢を理解しようとしていると思います。NavigationController は、ナビゲーション バーが必要ないため、実際には必要なものではありませんが、ここにビュー コントローラーの配列があり、それぞれのビュー プロパティが割り当てられている各ビューを指しているのが理にかなっています。スワイプすると、ビュー コントローラー インデックスを使用して適切なビューが表示されます (アニメーション コードを使用)。

別の可能なオプションは UIScrollView ですが、それは面倒なようで、私が本当に望むものではないかもしれません.

最も簡単なセットアップの 1 つは、画面の上部と下部にある空の UIView で構成される XIB ファイルを作成し、プログラムでボタン (およびその一意のデータ) を入力することです。私がこれに悩まされている問題は、このようにビューをどのように交換するかということです。rootViewcontroller を最初のビューを持つ最初のビューコントローラーインスタンスにしてから、それらを交換できると思います。

さまざまなビューでスワイプするための最も簡単な (最もモジュール化された) アプローチを考え出すための質問や提案があるかどうかを知りたいと思っていると思います。ビュー コントローラの配列を使用する方法はありますか?

4

2 に答える 2

0

いくつかの考え:

  1. これは私にカスタムコンテナビューコントローラを叫びます(iOS 5以降の場合)。iOS用ViewControllerプログラミングガイドカスタムコンテナViewControllerの作成を参照してください。

  2. の使用について話しUISwipeGestureRecognizerました。あなたもいつでも考えることができUIPanGestureRecognizerます。継続的なジェスチャーがあると便利です。ページスワイプで指を追跡する本を読むことを考えてみてください。ただし、ジェスチャーの途中で停止して戻ることができます。確かに、今のところスワイプジェスチャから始めますが、UXがそれに適している場合は、将来的に継続的なジェスチャをいつでも検討できます。

  3. 「事前にビューをプリロードする」ことを計画しているとのことですが。一般に、モバイルデバイスのメモリ容量が限られていることを考えると、それよりも保守的になりたいと思うでしょう。たぶん、現在のビューと、4つの方向のそれぞれに移動する可能性のある4つのビューをロードします(瞬時に表示できるようにします)が、そのままにしておきます。4つの可能な目的地のいずれかに行ったら、次に進んで、現在の目的地から到達できないものを解放し、到達可能な目的地をティーアップします。

于 2013-01-12T20:02:15.977 に答える
0

1つのXibで十分です(とにかくアプリのこの部分では)。

UINavigationControllerを使用しないでください。NavControllerのメタファーは、カードのスタックの1つです。そのデータ構造はありません。

一般的な考え方は、1画面分のデータに対して1つのViewControllerです。2つのviewController(1つは上部、もう1つは下部)が必要だと感じた場合は、カスタムコンテナコントローラーを調べて、含まれているコントローラーがインスタンスメソッド(viewDidLoad、viewWillAppear、等)。viewControllerのペアを管理するコンテナコントローラーの例は、iPadsplitViewControllerです。しかし、私はあなたがこれをする必要はないと思います。

画面の下半分にscrollViewを配置し、それを使用してデータビューを管理することをお勧めします。画面の上部も(他の条件下で)変更する必要がある場合は、2つのscrollViewを作成することもできます。1つは上、もう1つは下です。それらはページングすることができ、それぞれの画面部分の正確なサイズであるビューを含むことができます。デリゲートメソッドの共通の場所として、単一のviewControllerを含むものを共有できます。

私はあなたが何を達成したいのか十分に正確な考えを持っていないので、私はあなたにこれ以上の詳細を本当に助けることはできません。おそらく、これらの方法の1つを試して実装し、アイデアが具体的になったら、さらに質問をしてここに戻ってくる必要があります。最も単純なアイデア(たとえば、単一のviewController内のscrollView)から始めて、それを壊す必要があるとわかったときにだけそれをチャックしてください!

あなたのコメントに続いて更新
してください、私はscrollViewがあなたのために働くかもしれないと思います。(Robが示唆しているように)カスタムコンテナコントローラーを使用してビューコントローラーのスタックを管理することは、非常に複雑になる可能性があると思います。独自のカスタムコンテナコントローラーを作成する必要があります。UINavigationControllerなどの既存のコントローラーは、データ構造には適していません(とにかく収集できるものから)。

大量のUIViewを管理する必要はありません。実際、必要なのは5つだけです。1つはscrollViewの画面上の部分、もう1つはすぐ左右の画面、そして同様に上下のすぐ近くの部分です。tableViewsがセルを再利用するのと同じように、スワイプしながらこれらのビューを再利用できます。残りの部分は、データを操作して、画面に表示されたときに適切なコンテンツがビューに配置されるようにすることです。

これに関するいくつかのアイデアについては、この質問に対する私の回答を参照してください:UICollectionView水平連続ループ

于 2013-01-12T19:58:23.050 に答える