分配给 ID 从不兼容的类型''CameraVIewController *''警告显示在下面的代码
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
答案 0 :(得分:17)
实际上,我认为真正的原因是你错过了协议“ UINavigationControllerDelegate ”
在 UIImagePickerController.h 中,您可以看到委托定义:
@property(nonatomic,assign) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
所以,如果你想像这样分配委托:
picker.delegate = self;
self viewController必须同时实现 UINavigationControllerDelegate 和 UIImagePickerControllerDelegate
如果你只实现 UIImagePickerControllerDelegate ,你找不到任何错误文字,但是你会收到一条警告“从不兼容类型分配给id''CameraVIewController ''* “,将 UINavigationControllerDelegate 添加到你的viewController的协议声明中就可以摆脱它。
这是一个非常晚的答案,但我刚刚遇到并解决了它,希望它有所帮助。
答案 1 :(得分:10)
你可能没有声明你的类符合UIImagePickerController。
@interface CameraVIewController : UIViewController <UIImagePickerControllerDelegate>
答案 2 :(得分:7)
或者,您可以使用强制转换修复警告:
picker.delegate = (id <UIImagePickerControllerDelegate>) self;
但你必须实施UIImagePickerControllerDelegate
。
答案 3 :(得分:0)
另一种方法是在实现文件之上声明私有类或类扩展。例如:
@interface CameraVIewController (Private) <UIImagePickerControllerDelegate>
@end