我正在尝试添加UIImagePickerController
并收到incompatible type 'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate>'
编译器警告。我需要知道为什么?并为它提供解决方案。
的.m
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
·H
@interface GobblesViewController : UIViewController <UIImagePickerControllerDelegate>
{
UIImagePickerController *imagePicker;
}
@property (nonatomic,strong)UIImagePickerController *imagePicker;
[imagePicker setDelegate:self];
的警告点,我不知道为什么会发生这种情况。
答案 0 :(得分:10)
您收到此警告是因为在这种情况下,您传递给self
的{{1}}属性的对象UIImagePickerController
不符合{ {1}} 和 delegate
协议。这是因为UIImagePickerControllerDelegate
是UINavigationControllerDelegate
的子类,它已经声明了它自己的UIImagePickerController
。
UINavigationController
上的delegate
属性定义为:
delegate
这意味着它预期任何符合这两个协议的对象。
您班级的UIImagePickerController
声明应该是......
@property (nonatomic, assign) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;