从不兼容的类型'CameraVIewController*''分配给'id <UINavigationControllerDelegate,UIImagePickerControllerDelegate>'

sus*_*tha 24 objective-c ipad

Assigning to id<UINavigationControllerDelegate,UIImagePickerControllerDelegate> from incompatible type CameraViewController* 警告显示近picker.delegate = self;线

-(IBAction) getPhoto:(id) sender {
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;

if((UIButton *) sender == takePhoto) {
    picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
} else {
    //picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
   picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}

[self presentModalViewController:picker animated:YES];
Run Code Online (Sandbox Code Playgroud)

}

Kyl*_*egg 83

请注意,您必须符合UIImagePickerControllerDelegateUINavigationControllerDelegate协议才能使用图像选择器.

  • 这应该标记正确 - 大多数人都希望UIImagePickerControllerDelegate是必需的,但忽略了它也要求UINavigationControllerDelegate.感谢您的回答. (3认同)
  • 这个为我做了.谢谢! (2认同)
  • 为什么它需要UINavigationControllerDelegate?这真是个谜. (2认同)

emo*_*ity 14

只需添加两个协议.

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

然后显然设置委托.:)


Jim*_*Jim 8

说明UIImagePickerController代表必须实现UIImagePickerControllerDelegate协议的文档.你CameraViewController要么没有实现这个协议,要么没有声明它在它的标题中这样做.

  • Downvoted.你还应该遵守`UINavigationControllerDelegate` (8认同)