添加UIImagePickerController时发出警告

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在这种情况下,您传递中UIImagePickerControllerdelegate财产,不符合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)