2011-12-20 2 views
23

Assigning to id<UINavigationControllerDelegate,UIImagePickerControllerDelegate> from incompatible type CameraViewController*警告ショー<code>picker.delegate = self;</code>ライン近く

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

[この] [1]は私がこの質問のために設立した最良の答えです。 [1]:http://stackoverflow.com/questions/4727895/iphone-uiimagepickercontrollerdelegate-inheritance –

+2

今私はドキュメントがUIImagePickerControllerDelegateのためにこれを言うので、あなたが、またUINavigationControllerDelegateプロトコルにあなたのUIViewControllerを割り当てる必要があることに気づきました。 @property(非アトミック、代入)id delegate; これは、これらのプロトコルの両方に割り当てる必要があることを意味します。 –

答えて

7

The documentation for UIImagePickerController「 '* CameraVIewController' 互換性のない型から 'ID ' に割り当てることは、デリゲートは UIImagePickerControllerDelegateプロトコルを実装しなければならないと言います。 CameraViewControllerは、このプロトコルを実装していないか、またはヘッダーにそのプロトコルが存在することを宣言していません。

+7

Downvoted。あなたはまた、 'UINavigationControllerDelegate'に従うべきです – Honey

80

イメージピッカーを使用するには、UIImagePickerControllerDelegateUINavigationControllerDelegateの両方のプロトコルに準拠する必要があります。

+2

これは私にとってそれをしました。ありがとう! – Mike

+3

これは正しいとマークする必要があります - ほとんどの人はUIImagePickerControllerDelegateが必要であると考えていますが、UINavigationControllerDelegateも要求していることを見落としています。ご回答有難うございます。 – Adama

+2

なぜUINavigationControllerDelegateが必要ですか?それは本当の謎です。 – fatuhoku

13

両方のプロトコルを追加するだけです。

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 

次に、明示的に代理人を設定します。 :)

関連する問題