アップルのデベロッパーのドキュメントや他の本、リソースなどのデリゲートのテーマがたくさんあります。スタックオーバーフローなど。しかし、私はまだそれを取得していません。デリゲートを使ってObj-C/Cocoaのビューコントローラチェーンを後ろに/上に移動する方法
私は最近、スタンフォードのCS193P Winter 2010シリーズでNavigation View Controllerなどの講義を視聴しました。その講義では、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
}
多分私はあなたのコメント、fbrertoを誤解しました。だから私は、 "list"がスタックに "detail"をプッシュし、次に "detail"のdelegateを "list?"に設定するというmyListControllerの擬似コードで正しい軌道に乗っています。私は@protocol SetDataInParentを間違った場所に配置しましたか? – Gregir
@Gregir:あなたのコードでプロトコルを見逃しましたが、私は今それを見ています。はい、あなたの要約は、私が言っていたことに沿って聞こえます。 – fbrereto
ありがとうございます。これは大きな助けになり、大きなハードルを乗り越えました。 – Gregir