46

someViewController.delegate = selfとの意味を説明できる人はいself.delegateますか? 彼らはどこで私たちを助けますか?

4

3 に答える 3

101

代理人はあなたにメッセージを送信します。

例: 加速度計デリゲートを使用すると、加速度計に関するメッセージが表示されます。

その新しいニュートリノ検出デリゲートを使用すると、その領域で検出されたニュートリノに関するメッセージが表示されます。

ポップアップを使用すると、ポップアップからメッセージが送信されます。その方法は、PopUp のデリゲートを使用することです。たくさんの例があります。

したがって、デリゲートはメッセージを送信します。

それはとても簡単です。

「これらのメッセージはどこに送信されますか?」と尋ねるかもしれません。

答えは次のとおりです。「.delegate」を設定した場所にメッセージを送信します。

「デリゲートを設定する」とは、メッセージの送信先を指定することです。

したがって、

blah.delegate = awesomePlace はメッセージを「amazingPlace」に送信します。

blah.delegate = whereelse は、メッセージを「somewhereElse」に送信します。

blah.delegate = self はメッセージを送信します ...... あなたに

多くの場合、メッセージを「あなた」に届けたいので、単に「blah.delegate = self」とします。

そのコード行を忘れてしまうのは、非常によくある間違いです。

そのコード行を忘れると、お腹がいっぱいになります。メッセージはどこにも行かず、何が問題なのかを理解しようとして頭をかきむしるしかありません。

他にやらなければならないことがあります。デリゲートを使用する場合は、デリゲートを使用することを事前に通知する必要があります。

どうやってするか?

それは非常に簡単です...

昔はObjective-C...

// old days!
@interface AppDelegate_Pad : NSObject <UIApplicationDelegate>
@interface BigTop : UIViewController <ASIHTTPRequestDelegate,
                                        UIPopoverControllerDelegate>
@interface Flying : UIViewController <UIAccelerometerDelegate>

「BigTop」が 2 つのデリゲート、つまり ASIHTTPRequestDelegate と UIPopoverControllerDelegate を使用しようとしていることがわかります。'Flying' は 1 つのデリゲートのみを使用したいのに対し、加速度計を使用したいと考えています。

スイフトで...

 class YourClass:UIViewController, SomeDelegate, AnotherDelegate

あらゆる場所でデリゲートを使用しないと、iPhone で多くのことを行うことはできません。

デリゲートは、iOS ではいつでもどこでも使用されます。

クラスが多数のデリゲートを使用することは完全に正常です。つまり、クラスは多数のデリゲートからメッセージを取得する必要があります。

最近の Swift では、タイプするだけです

  blah.delegate = self

それだけです。

それがあなたがしていることです。デリゲートはメッセージを送信しますメッセージの送信先を指定する必要があります。非常に一般的に、あなたはそれらを「あなた」に行きたいので、その場合は単にblah.delegate=self.

于 2010-11-18T08:47:30.127 に答える
-3

いずれにせよ、ボーンの答えが役に立たない場合..デリゲートは基本的にオブジェクト上のイベントの反応であり、「。delegate = self」と言うことは、それらのプロトコルが自己で採用されたことを意味します...たとえば、テーブルビューで行が選択されると、テーブルビューのデリゲートメソッド「didSelectRowAtIndexPath」によって通知されます...ビューコントローラーにテーブルビューがあり、「didSelectRowAtIndexPath」がそのビューコントローラーでのみ定義されている場合は、次のようになります... tableview.delegate = self " ...および「self.anything」は、「anything」が自己のプロパティであることを示すために使用されます。たとえば、NSString * any; @property(nonatomic、retain)NSString * any;

次に「self.anything」

于 2010-11-18T07:25:21.080 に答える