誰でもsomeViewController.delegate = self
とself.delegate
の意味を説明できますか?彼らはどこで私たちを助けますか?.delegate = selfとは何を意味していますか?
答えて
代表者メッセージをお送りします。
たとえば、加速度計デリゲートを使用すると、加速度計に関するメッセージが表示されます。
新しいニュートリノ検出デリゲートを使用すると、その領域で検出されたニュートリノについてのメッセージが表示されます。
PopUpsを使用すると、PopUpsからメッセージが送信されます。そして、そのやり方は、ポップアップの代議員と一緒です。多くの例があります。
したがって、代理人はメッセージを送信します。
これは簡単です。
"これらのメッセージはどこに送信されますか?"
答えはこれです:「デグリーゲート」を設定した場所にメッセージを送信します。
「代理人を設定する」ときには、メッセージの送信先を指定することができます。
したがって、
blah.delegate = amazingPlaceは "amazingPlace" にメッセージを送信します。
blah.delegate = somewhereElseは "somewhereElse"にメッセージを送信します。
blah.delegate =自己がメッセージを送信します...... です。あなたはちょうどそれがコード行を忘れるために、非常に一般的な間違いである「blah.delegate =自己」
言うよう
は非常に多くの場合、あなたは、メッセージは「あなた」に来てほしいです。
コード行を忘れてしまった場合は、詰め込みが行われます。メッセージはどこにもとなり、何がうまくいかなかったのか把握しようとすると頭が痛いままです。
他に何かする必要があります:デリゲートを使用する場合は、デリゲートを使用する必要があります。 Objective-Cのと昔では、あなただけ...これを行う
@interface AppDelegate_Pad : NSObject <UIApplicationDelegate>
@interface BigTop : UIViewController <ASIHTTPRequestDelegate, UIPopoverControllerDelegate>
@interface Flying : UIViewController <UIAccelerometerDelegate>
あなたは「BIGTOP」の2人の代表者、すなわちASIHTTPRequestDelegateとUIPopoverControllerDelegateを使用したいことがわかります。 「フライング」は1人の代議員しか使用しないことを望んでいますが、加速度計を使用したいと考えています。スウィフトで
、それは簡単なことではありません - あなたはちょうどそのプロトコルカンマを持っている:
class YourClass:UIViewController, SomeDelegate, AnotherDelegate
あなたは本当にすべての場所でデリゲートを使用せずにiPhone上で多くを行うことはできません。
参加者はどこでも、常にiOSで使用されます。
クラスでは十数人の代理人を使用することは完全に正常です。どこかに「フライング」のコードでは、上記の「フライング」の例では
それは、それはASIHttpRequestsためにどこかにデリゲートを設定しなければならない、BIGTOPの場合 [[UIAccelerometer sharedAccelerometer] setDelegate:self];
を言わなければならないでしょう
Swを持つ昨今ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:gid forKey:@"gid"];
[request setPostValue:nom forKey:@"nom"];
[request setDelegate:self];
(x.delegate=self
が[x setDelegate:self]
と全く同じだった、Objective-Cのと昔に忘れてはいけません。)
IFTあなたは、単に
x.delegate = self
を入力し、それはそれでお終いです。
これはあなたがやっていることです。代理人はメッセージを送ります。あなたはと言う必要があります。ここでは、メッセージの送信先はです。非常に典型的には、あなたは彼らがあなたに行くことを望んでいます。その場合は、単にx.delegate=self
と言います。
希望します。
どんな場合でもBourneの答えは役に立たない。代表者は基本的にオブジェクト上のイベントの反応であり、 ".delegate = self"はそれらのプロトコルが自己で採用されたことを意味する。テーブルビューの行のデリゲートメソッド "didSelectRowAtIndexPath"によって、ビューコントローラにテーブルビューがあると、 と "didSelectRowAtIndexPath"が定義されていると、tableviewで行が選択されたときに発生します。tableview .delegate = self "... と" self.anything "は、"何か "が自己のプロパティであると言うのに使われます。 たとえば、 NSString * anything; @property(nonatomic、retain)NSString * anything ;
"self.anything"
Delegate
は、データ/メッセージb/wクラスの2つのオブジェクトを渡し/通信するために使用されます。ここでtableView
(送信者)はviewController
(受信者)にデータ/メッセージを送信します。 UITableView
をカスタムで実装する例を検討するviewController
ここでは、UITableViewDataSource
& UITableViewDelegate
というプロトコルが実際にはプロトコルです。残念ながら、UIKit Framework
はオープンソースではありません。しかし、私は多くの記事を参照した後に内部的に何が起こるかを保証します。
プロトコルはバスケットボールのコーチのようなもので、いくつかの要件があります。彼/彼女は、クラス、構造体、enum what to do?
のようなプレーヤーに、これらの要件を使用して指示します。しかし、He/She doesn't knows
how to do?
によって、したがって、そのプロトコルに準拠するクラスまたは構造体は、ボールをダンクすることを達成しながら、それらの要件に実装を提供する必要があります。
protocol UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
}
プロトコルはDataSourceプロトコルであると言われています。プロトコルは、以下に示すように、常に「戻り値の型」を持つ必要な関数を含んでいます。
protocol UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
}
実装のUITableView
class viewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let tableView = UITableView()
override func viewDidLoad {
tableView.delegate = self
tableView.dataSource = self
}
ここでカスタムのViewController内部、委任元(送信者)としてtableView
作用デリゲート(受信機)として& viewController object i.e (self)
。
をviewController
にするためには、両方のプロトコルに準拠する必要があります。
したがって、viewController
クラスオブジェクトは、両方のプロトコルに必要なすべての機能を実装しています。 self
は、UITableViewDelegate
タイプまたはUITableViewDataSource
タイプのいずれかとして使用できます。これは、それに従うクラスのオブジェクトのタイプとしてプロトコルを使用できるためです。 tableView
の両方のプロパティ、すなわちdelegate
& dataSource
は同じプロトコルタイプを持つため、self
に割り当てられています。
ユーザが選択すると、両方のプロトコルの非オプション機能が
プロトコルUITableViewDelegate
機能
func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Do further processes like pushing or poping another viewController
}
プロトコルUITableViewDataSource
機能
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
}
1)以下のようviewController
クラスオブジェクトに実装されていますセクション内の行tableview
(送信者)すなわちUItableView()
を呼び出すパラメータtableView
& indexPath
にデータを渡すことで、オブジェクト(Receiver)にあるdelegate
プロパティを使用して、以下の関数を示します。今度はviewController
は、渡されたデータを使用して、新しいカスタムviewControllerにプッシュまたはポップするようなプロセスを実行します。 UITableViewDatasource
プロトコル内部
tableView.delegate?.tableView(UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
2)機能tableview
(送信者)にカスタムデータを提供します。 tableview
は、datasource
プロパティを使用してviewController
オブジェクト(Receiver)に存在するパラメータtableView
& indexPath
にデータを渡してDatasource関数を呼び出すことによってviewController
オブジェクトに問い合わせます。今すぐviewController
は、&の戻り値を持つデータを使用して、カスタムデータバックtableview
を返します。今tableview
が
tableView.dataSource?.tableView(UITableView, numberOfRowsInSection section: Int) -> returns "10"
tableView.dataSource?.tableView(UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> returns "cell"
最後にindexpathで「セル」のセクション&種類の「10」のセルを作成するために、これらのデータを使用して、UIKit Framework
全体はそのすべてのクラスで&データソースのデザインパターンを委任使用するようUIApplication
、UITableView
、UICollectionView
、UITextField
&などがあります。残念ながら、UIKit Framework
はオープンソースではありません。
ねえ、私はstackOverflowの初心者です。私の知っているいくつかの既知のQに答えるために周りを見回す! –
答えは正しいです。投票しないでください!ちょうどbecozそれはすでに8年前に答えられています。 –
ダウン投票は、答えが間違っているだけではありません。下の投票ボタンにカーソルを合わせると、ツールのヒントが表示されます。私はもっと最近の質問に答えることを提案し、回答はまだありません。あなたはお気に入りのタグをつけることができ、より関連性の高い質問リストをフィルタリングします。そうすれば、新しい質問を見つけることができます。 – Fogmeister
- 1. 客観的なcの中で[self self]は何を意味しますか?
- 2. 「App Delegate '...の表示されない@interfaceは何を意味しますか?
- 3. 「eは65537(0x10001)」とは何を意味していますか?
- 4. MirthはMirthとは何を意味していますか?
- 5. ANTでは「**」とは何を意味していますか?
- 6. Perlでは "$$ q"とは何を意味していますか?
- 7. PHPでは「:」とは何を意味していますか?
- 8. PHPで「++」とは何を意味していますか?
- 9. hibernate.connection.urlで 'shutdown ='とは何を意味していますか?
- 10. hibernate.default_schemaとは何を意味していますか?
- 11. shで "$ {x %% *}"とは何を意味していますか?
- 12. プロローグで/ 2/3とは何を意味していますか?
- 13. ハスケルで "ls"とは何を意味していますか?
- 14. 「バンク」とは何を意味していますか? Wikipediaの
- 15. javascriptで_(variable_name)とは何を意味していますか?
- 16. コマンドラインで「プログラム」とは何を意味していますか?
- 17. セマンティックバージョニングで「パブリックAPI」とは何を意味していますか?
- 18. Rで「S3メソッド」とは何を意味していますか?
- 19. "int * const * b"とは何を意味していますか?
- 20. 「+ =」(プラスは等しい)とは何を意味しますか?
- 21. 0x0Fは何を意味していますか?そして、このコードはどういう意味ですか?
- 22. [...]はPythonの出力として何を意味しますか?
- 23. Rubyでは "$$"というトークンは何を意味しますか?
- 24. getActivity()は何を意味しますか?
- 25. (+ var)は何を意味しますか
- 26. IndexOutofRangeExceptionは何を意味しますか?
- 27. UnmappableCharacterExceptionは何を意味しますか?
- 28. バックスラッシュは何を意味しますか?
- 29. {}は何を意味しますか?
- 30. new()は何を意味しますか?
ちなみに、ニュートリノ検出の代表者は本当にありません。あなたは自分で書く必要があります。 – Fattie
本当にありがとうございました。 –
私はこれまで見たことがあります – SeanNieuwoudt