XCode 4.3.2でマスターディテールアプリケーションテンプレート(ARC、ストーリーボードを使用)でマスターの項目が変更されたとき(詳細に置き換える)テーブルビューが選択されています。私はこれの代理人/プロトコルを実装しようとしています。iOS Master-Detail app:プロトコルとデリゲートを定義する
私が混乱しているのは、どのクラスがプロトコルマスターまたは詳細で定義されたメソッドを実装すべきかです。
詳細ビューの実装では、プロトコルメソッドを使用してマスターからの文字列として渡された選択に基づいて詳細ビューでプッシュ/ポップするようになりました。ここ
私は
1)
DetailViewController.hにMasterViewController.m@synthesize delegate;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[delegate masterSelectionChanged:@"Some string based on indexPath.row"];
}
3)MasterViewController.h
@protocol MasterViewDelegate <NSObject>
- (void)masterSelectionChanged:(NSString *)selection;
@end
@interface MasterViewController:UIViewContoller
@property (nonatomic, weak) id <MasterViewDelegate> delegate
2)プロトコルを定義しようとしたものです
#import "MasterViewController.m"
@interface DetailViewController:UINavigationController <MasterViewDelegate>
@end
4)この方法で
#pragma mark - MasterViewDelegate
- (void)masterSelectionChanged:(NSString *)selection
{
NSLog(@"the selection is: %s", selection);
// WIll push/pop view over here, may be perform segues based on selection
}
DetailViewController.m
で、マスター表の行を選択すると、何も起こりませんでした。クラッシュしたり、ログを表示したり、ビルド中にエラーが発生したりすることはありません。私はここで何を見逃しましたか?
1)あなたは(マスター/詳細テンプレートは、それぞれ1で非常に異なっている)、iPadやiPhoneについて話している2 )デリゲートプロパティを実際にどこに設定したのか、それとも定義しただけですか? – jrturton
@jrturton - iPad用にこれを試しています。 'delegate'プロパティを定義していますか?それが私が逃したものかもしれません。デリゲートプロパティはどこで定義する必要がありますか? – vikmalhotra