次の構造の ViewController クラスがあります。
ヘッダー ファイル:
@protocol GCStageViewControllerDelegate;
@interface GCStageViewController : UIViewController <UIActionSheetDelegate, UITextFieldDelegate, UIImagePickerControllerDelegate> {
id <GCStageViewControllerDelegate> delegate;
...
}
@property (nonatomic, retain) id <GCStageViewControllerDelegate> delegate;
...
@end
@protocol GCStageViewControllerDelegate
- (void)gcStageViewContollerDidFinish:(GCStageViewController *)controller withGCStageItem:(GCStageItem *)item;
@end
実装ファイル:
- (void)viewDidLoad {
...
stageInputTextField.delegate = self; // works
...
}
- (void)takePicture {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
} else {
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}
imagePicker.delegate = self; // here I get the error
[self presentModalViewController:imagePicker animated:YES];
}
takePicture メソッドでデリゲートを設定すると、次の警告が表示されます。
'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate>'
互換性のない型 'GCStageViewController *' からの割り当て
何が問題なのですか?