2012-06-19 13 views
5

iOSプログラミングの委任とデータソースについて学びました。デリゲートプロトコルよりもデータソースプロトコルを作成する際に必要な点はありますか?委任とデータソースiOS

また、1つのデリゲートで複数の同じオブジェクトのデリゲートを実装するにはどうすればよいですか?一意のカスタムアラートが多数あるオブジェクトの例

--Edit--

第二の部分のための例:異なるボタンを持つ4つの異なるアラートをそれぞれ有する

一つの目的。オブジェクトはアラートの代理人として各ボタンの動作を指示する必要があるためです。デリゲートメソッドを設定して各アラートを決定するにはどうすればよいですか?

答えて

14

どちらの種類のオブジェクトも同じように動作しますが、どちらが問題なのかは問題です。

デリゲート型オブジェクトは、別のオブジェクトが実行するアクションに応答します。例えば、UITableViewDelegateプロトコルは、ユーザがテーブル内の特定の行を選択したときにアクションを実行するための方法を有する(例えば、didSelectRowAtIndexPath)。

データソースタイプのオブジェクトは、別のオブジェクトにデータを提供します。例えば、UITableViewDataSourceプロトコルは、cellForRowAtIndexPathおよびnumberOfRowsInSectionのような方法を有し、表に何を表示すべきかを指示する。

コンパイルの点で2つの間に大きな違いはありません。単純に、どのオブジェクトがコードのユーザーにとって非常に明確なことをするかを示すコーディングスタイルです。

EDIT:

2番目の質問に答えるために:あなたは、各アラートが異なる応答したい場合は、アラートごとに異なるデリゲートを作成する必要があります。たとえば、アラートの1つが保存確認アラートである場合(ファイルを上書きし、ユーザーが何をしたいかを確認するためにポップアップする場合など)、

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

SaveConfirmAlertDelegate@implementationには、アラートでユーザーが押したボタンに応じて適切な保存機能を実装します。

アラートビューを作成するときに、デリゲートオブジェクトが何であるべきかを指定します。これはselfである必要はありません。 4つのデリゲートを異なるオブジェクトとして保存し、必要に応じてアラートに設定することができます。

これがクリアされることを希望します。

+0

私の最初の問題を説明してくれてありがとうございます。私は私の質問に例を追加しました。 – RMDan

+0

@RMDan私はあなたの2番目の質問に余分な説明を追加しました。私はビットをクリアすることを願っています。 –

+0

それは完璧な意味を成しています。私は委任についてもっと学ばなければならないが、それは理にかなっている。 – RMDan