Apple dev ドキュメント、私が持っている他の本、および stackoverflow などのリソースに、デリゲートに関する話題がたくさんあることを私は知っています。しかし、私はまだそれを取得していません。
私は最近、スタンフォード大学の CS193P Winter 2010 シリーズで Navigation View Controllers などに関する講義を見ました。その講義では、View Controller のスタック上でデータを転送する方法について説明していますが、これは簡単です。しかし、彼らは理想的にはデリゲート/プロトコルを使用してデータを「逆方向」に渡す (たとえば、詳細ビュー コントローラーからリスト ビュー コントローラーへ) と簡単に述べましたが、デモを行ったり、サンプル コードを投稿したりしませんでした。
この正確なシナリオのサンプルを読んで検索したので、デリゲート/プロトコルの使用に頭を悩ませることができますが、見つかりません。これが私が遊んでいる疑似コードです。データを「逆方向」に渡す必要がありますか?
myListController : UIViewController <SetDataInParent> {
// when pushing detail controller onto stack,
// set DetailController delegate = self
}
myDetailController : UIViewController {
//header file
@protocol SetDataInParent <NSObject>
- (void)willSetValue:(*NSString);
@end
@interface myDetailController {
id <SetDataInParent> delegate;
}
@end
// class/m file
@implementation
@synthesize delegate;
- (void)willSetValue:(*NSString) {
// code here that would take argument
// from detail controller and set
// a value or text field to that
// argument in list controller
}
// send message to list controller class
- [delegate willSetValue:string];
@end
}