2011-12-20 14 views
23

Assigning to id<UINavigationControllerDelegate,UIImagePickerControllerDelegate> from incompatible type CameraViewController* advertencia muestra cerca de picker.delegate = self; líneaAsignar a 'id <UINavigationControllerDelegate, UIImagePickerControllerDelegate>' de tipo incompatible 'CameraVIewController *''

-(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]; 

}

+0

[This] [1] es la mejor respuesta que fundé para esta pregunta. [1]: http://stackoverflow.com/questions/4727895/iphone-uiimagepickercontrollerdelegate-inheritance –

+2

Ahora me di cuenta de que es necesario asignar también su UIViewController el protocolo UINavigationControllerDelegate, porque la documentación dice esto para UIImagePickerControllerDelegate: @property (nonatomic, assign) id delegate; por lo que significa que debe asignar ambos protocolos. –

Respuesta

7

The documentation for UIImagePickerController dice que el delegado debe implementar el protocolo UIImagePickerControllerDelegate. Su CameraViewController no implementa este protocolo o no declara que lo hace en su encabezado.

+7

Downvoted. También debe ajustarse a 'UINavigationControllerDelegate' – Honey

80

Tenga en cuenta que debe cumplir con los protocolos UIImagePickerControllerDelegate y UINavigationControllerDelegate para usar el selector de imágenes.

+2

Este lo hizo por mí. ¡Gracias! – Mike

+3

Esto debe marcarse como correcto: la mayoría de las personas esperan que UIImagePickerControllerDelegate sea necesario, pero pasan por alto que también está solicitando UINavigationControllerDelegate. Gracias por tu respuesta. – Adama

+2

¿Por qué necesita UINavigationControllerDelegate? Eso es un verdadero misterio. – fatuhoku

13

Solo agregue ambos protocolos.

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 

asentando después el delegado obviamente. :)

Cuestiones relacionadas