Ill*_*lep 3 iphone cocoa-touch objective-c ios
我想添加一个UIImagePickerController,我得到一个incompatible type 'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate>'编译器警告.我需要知道为什么?并为它解决方案.
.M
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
.H
@interface GobblesViewController : UIViewController <UIImagePickerControllerDelegate>
{
UIImagePickerController *imagePicker;
}
@property (nonatomic,strong)UIImagePickerController *imagePicker;
Run Code Online (Sandbox Code Playgroud)

警告点 [imagePicker setDelegate:self];和我不知道为什么会发生这种情况.
Mar*_*ams 10
你得到这个警告,因为对象,self在这种情况下,您传递中UIImagePickerController的delegate财产,不符合UIImagePickerControllerDelegate 和 UINavigationControllerDelegate协议.这是因为UIImagePickerController它的子类UINavigationController已经声明了它自己的子类delegate.
该delegate属性UIImagePickerController定义为:
@property (nonatomic, assign) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
这意味着它预期任何符合这两个协议的对象.
@interface你班上的宣言应该......
@interface GobblesViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
Run Code Online (Sandbox Code Playgroud)