1

おはようございます。

私は過去 1 年間、多くのチュートリアルに取り組んでおり、ストーリーボードを使用してビュー階層に参照を戻すいくつかの方法を見てきました。私は、いくつかのベストプラクティスとは何か、さらに重要なことに、次の方法を使用した場合の落とし穴について考えていました。

  1. プロトコル - 子ビューはプロトコルを実装し、親ビューは自身をデリゲートとして設定し、メッセージに応答します。これを使用して、デリゲートに情報を返すことができます。子は、呼び出された理由について何も知る必要はなく、自分の仕事を行い、要求された情報は何でも返します。

  2. モデル参照を持つ子 ViewController のパブリック プロパティ。セグエで、目的のView Controllerへの参照を取得します。このView Controllerには、公開されているモデル プロパティがあります。モデルへの参照を渡します。私は個人的にこの方法が好きです。子が変更を行うと、モデルが直接変更されます。呼び出された時点で、[self.navigationController dismissViewControllerAnimated:YES]または必要なモデルの情報を持っているView Controllerからナビゲート/却下します。

  3. 他に何か?- 他の誰かが良いアイデアを持っています。私はそれを聞きたいです。

これに関する誰かの意見をありがとう。猫の皮をむく方法は常に複数あることは知っていますが、猫の皮をきれいかつ迅速に剥がしたいだけです。(-ごめんねこ)

スティーブ

4

2 に答える 2

1

完全を期すために、列挙した 2 つのオプションに加えて、他にもいくつかのオプションがあります。

  1. prepareForSegueunwind segue (iOS 6 以降) を使用すると、データを「宛先」(巻き戻し先のコントローラー) に;経由で渡すことができます。

  2. マスター モデル オブジェクトにシングルトンを使用します。

  3. 永続ストレージには Core Data (または SQLite) を使用します。また

  4. 通知またはキー値監視を使用します (ただし、これは複数のオブジェクトにデータ更新を伝達する場合にはるかに優れています)。

個人的には、私は通常、提示されたビュー コントローラーが提示側のビュー コントローラーに何らかの情報を通知したいだけの場合にプロトコルを使用しますが、これらの手法にはそれぞれの用途があります。

于 2013-06-16T13:54:14.667 に答える
0

必要に応じて別のオプションがあり、セグエは必要ありません。

子View Controllerは、独自のオブジェクトを作成するか、任意のオブジェクトの既知の共有参照を取得できます。独自のオブジェクトを作成すると、テーブルに新しいアイテムを追加するのに適しています。既知の共有参照を取得すると、設定オブジェクトのようなものに適しています。

子ビュー コントローラーを閉じる準備ができると、通知が投稿されます。

[[NSNotificationCenter defaultCenter] postName:MyAppDidCreateNewItem object:self.item];

また

[[NSNotificationCenter defaultCenter] postName:MyAppDidUpdateSettings object:self.settings];

親View Controllerは、オブザーバーとして通知に登録します。通知が発生すると、親View Controllernotification.objectは参照を取得してそれ自体を更新するために使用できます。

于 2013-06-16T13:51:24.113 に答える