2011-12-20 13 views
23

Assigning to id<UINavigationControllerDelegate,UIImagePickerControllerDelegate> from incompatible type CameraViewController* di allarme indica che nei pressi picker.delegate = self; lineaAssegnazione a 'id <UINavigationControllerDelegate, UIImagePickerControllerDelegate>' dal tipo incompatibile '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

[Questo] [1] è la migliore risposta che ho trovato per questa domanda. [1]: http://stackoverflow.com/questions/4727895/iphone-uiimagepickercontrollerdelegate-inheritance –

+2

Ora ho notato che è necessario assegnare anche la vostra UIViewController al protocollo UINavigationControllerDelegate, perché la documentazione dice che questo per UIImagePickerControllerDelegate: @property (nonatomic, assign) id delegate; quindi significa che è necessario assegnare a entrambi questi protocolli. –

risposta

7

The documentation for UIImagePickerController dice che il delegato deve implementare il protocollo UIImagePickerControllerDelegate. Il tuo CameraViewController non implementa questo protocollo o non dichiara che lo fa nell'intestazione.

+7

Downvoted. Dovresti anche conformarti a 'UINavigationControllerDelegate' – Honey

80

Nota che è necessario essere conformi ai protocolli UIImagePickerControllerDelegate e UINavigationControllerDelegate per utilizzare il selettore di immagini.

+2

Questo lo ha fatto per me. Grazie! – Mike

+3

Questo dovrebbe essere contrassegnato correttamente - La maggior parte delle persone si aspetta che UIImagePickerControllerDelegate sia richiesto, ma trascura che chiede anche UINavigationControllerDelegate. Grazie per la tua risposta. – Adama

+2

Perché mai è necessario UINavigationControllerDelegate? Questo è un vero mistero. – fatuhoku

13

Basta aggiungere entrambi i protocolli.

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 

Quindi impostare il delegato ovviamente. :)

Problemi correlati