1

できる限りこれを説明しようとしますが、混乱しすぎたらお詫びします - 私はこの問題に何時間も悩まされてきました。

私のアプリケーションには、ユーザーが検索を実行するための一連の基準を選択できる検索画面があります。これらの基準の一部は、選択できる値のかなり長いリストで構成されているため、検索画面に 4 行のテーブルビューが必要です。各行は、ユーザーが設定できる基準を表します。ユーザーが行をクリックしたら、その基準の選択可能な値を含む新しいテーブルで構成されるナビゲーションコントローラーに新しいウィンドウをプッシュしたい - ユーザーが新しいウィンドウでこれらの行のいずれかをクリックすると、選択した値が必要ですメインの検索画面に送り返され、検索画面に戻ります。

これを行う最良の方法は何ですか?

詳細:

私の検索画面は SearchViewController と呼ばれ、navigationController に含まれています。SearchViewController には、2 つのスライダーと、"Searchtype"、"Property type"、"Salestype"、"Area"、および searchbutton という 4 つの行を持つ tableView が含まれています。ユーザーが「Searchtype」をクリックした場合、「Searchtype」基準のさまざまな可能な値を表す一連の行を含む新しい tableView を含む新しいビューを navigationController にプッシュする必要があります - 同じことが 4 行すべてに当てはまりますSearchViewController.

しかし、私はこれを行うための最良の方法を理解できませんか? 私が得ることができる助けに本当に感謝しています-私はこれを理解しようとして夢中になります:)

ところで。私は Interface Builder を使用しません - すべての UI 要素は手動でコーディングされています。

ここに画像の説明を入力

4

1 に答える 1

3

ここでそれを行う5つの方法:

1) ユーザーが検索タイプを選択すると、それが通知されるように、Search View Controller を Search Type View Controller のアクションのデリゲートにします。必要に応じて、コンパイル時に適切なチェックを行うためにプロトコルを使用し、循環参照を避けるためにデリゲートに対して保持ではなく割り当てを使用することを忘れないでください。

2) UINavigationController デリゲートを検索ビュー コントローラー (またはそれを制御する任意のクラス) に設定し、検索タイプ ビュー コントローラーがポップアウトされたときにイベントをリッスンします。

3) 上記のように、viewWillAppear: に「更新」機能を実装しますが、viewWillAppear: の実装がうまくいかず、まったく信頼できないため、これはお勧めできません。シンプルなアプリならいいかもしれませんが、アプリの構造が複雑になったら忘れてください。

4) NSNotificationCenter を使用します。Search View Controller は検索条件のすべての変更を監視し、各子 View Controller で、ユーザーが変更すると通知を投稿します。これはより複雑ですが、上記のすべての方法よりもはるかに強力で柔軟です。

5) 同様に、Core Data を使用してすべての検索条件をオブジェクトに保存し、KVO を使用してそのオブジェクトの変更をリッスンできます。これは少し高度でやり過ぎかもしれませんが、KVO を知っていれば、Objective C での作業がずっと簡単になるので、とにかく見てみる価値があります。

ところで、最初はすべての UI を手作業でコーディングして概念を理解することをお勧めしますが、できる限り Interface Builder に移行するようにしてください。これは非常に推奨される作業方法です (これについては、Stackoverflow または Web 上に数え切れないほどのスレッドがあり、IB が優れている理由についてより詳細な議論が行われています)。

于 2011-02-06T13:35:11.673 に答える