誰かがsomeViewController.delegate = self
とself.delegate
の意味を説明できますか?彼らはどこで私たちを助けますか?
デリゲートメッセージを送信あなたに。
たとえば、加速度計デリゲートを使用すると、加速度計に関するメッセージが表示されます。
新しいニュートリノ検出デリゲートを使用すると、そのエリアで検出されたニュートリノに関するメッセージが表示されます。
PopUpsを使用する場合、PopUpsからメッセージが送信されます。そして、それが行われる方法は、PopUpのデリゲートです。多くの例があります。
したがって、デリゲートはメッセージを送信します。
とても簡単です。
「これらのメッセージはどこに送信されますか?」
答えはこれです。「。delegate」を設定した場所にメッセージを送信します。
「代理人を設定する」とは、メッセージの送信先を言っていることを意味します。
したがって、
blah.delegate = amazingPlaceはメッセージを「amazingPlace」に送信します。
blah.delegate = somewhereElseは、メッセージを「somewhereElse」に送信します。
blah.delegate = selfはメッセージを送信します...... to you。
たいていの場合、メッセージが「あなた」に届くようにしたいので、「blah.delegate = self」と言うだけです。
そのコード行を忘れることはよくある間違いです。
そのコード行を忘れると、詰め物ができます。メッセージはnowhereになり、何が問題だったかを理解しようとして頭を悩ませています。
あなたがしなければならない何か:デリゲートを使うとき、あなたは事前にアナウンスしなければならない、それはデリゲートを使いたいということです。
どうやってするか?
昔のobjective-cでは、あなたはこれをしました...
@interface AppDelegate_Pad : NSObject <UIApplicationDelegate>
@interface BigTop : UIViewController <ASIHTTPRequestDelegate,
UIPopoverControllerDelegate>
@interface Flying : UIViewController <UIAccelerometerDelegate>
「BigTop」が2つのデリゲート、つまりASIHTTPRequestDelegateとUIPopoverControllerDelegateを使用したいことがわかります。一方、「Flying」は1つのデリゲートのみを使用したいのですが、加速度計を使用したいと考えています。
Swiftの場合、これは簡単なことではありません。次のように、プロトコルにカンマを付けるだけです。
class YourClass:UIViewController, SomeDelegate, AnotherDelegate
デリゲートをあちこちに使用しないと、iPhoneで多くのことを行うことはできません。
デリゲートは、iOSの至るところで使用されています。
クラスが1ダースのデリゲートを使用することは完全に正常です。
上記の「Flying」の例では、「Flying」のコードのどこかに、次のように記述する必要があります...
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
BigTopの場合、ASIHttpRequestsのどこかにデリゲートを設定する必要があります。
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:gid forKey:@"gid"];
[request setPostValue:nom forKey:@"nom"];
[request setDelegate:self];
(objective-cを使用して昔は忘れないでください。x.delegate=self
は[x setDelegate:self]
とまったく同じでした。)
Nowidays with Swift入力するだけ
x.delegate = self
これですべてです。
それがあなたがしていることです。デリゲートメッセージを送信。 whereとメッセージを送信する必要があります。非常に一般的に、あなたは彼らに「あなた」に行きたいので、その場合は単にx.delegate=self
と言うだけです。
それが役に立てば幸い。