2012-01-10 543 views
3

我試圖添加一個UIImagePickerController,我得到一個incompatible type 'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate>'編譯器警告。我需要知道爲什麼?併爲其提供解決方案。警告添加UIImagePickerController

.M

imagePicker = [[UIImagePickerController alloc] init]; 
[imagePicker setDelegate:self]; 

@interface GobblesViewController : UIViewController <UIImagePickerControllerDelegate> 
{ 
    UIImagePickerController *imagePicker; 
} 
@property (nonatomic,strong)UIImagePickerController *imagePicker; 

compiler warning

警告點[imagePicker setDelegate:self];,我不知道這是爲什麼發生的.h。

回答

10

你得到這個警告,因爲對象,self在這種情況下,你傳遞到UIImagePickerControllerdelegate財產,不符合UIImagePickerControllerDelegateUINavigationControllerDelegate協議。這是因爲UIImagePickerControllerUINavigationController的一個子類,它已經聲明它自己的delegate

UIImagePickerController上的delegate屬性被定義爲:

@property (nonatomic, assign) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate; 

這意味着它是預期符合這兩個協議的任何對象。

@interface聲明你的類應該是...

@interface GobblesViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>