2012-05-30 3 views
10

Я только начинаю работать в iOS, поэтому для моего первого проекта я разрабатываю простое приложение для iOS, чтобы сделать снимок и отобразить его на экране.Предупреждение при открытии камеры iOS

Вот мой код, он на четвертой строке, что я получаю ошибку:

- (IBAction)takePicture:(id)sender { 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    imagePicker.delegate = self; 
    [self presentModalViewController:imagePicker animated:YES]; 
} 

Я получаю следующее предупреждение:

Assigning to 'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate>' from incompatible type 'todd_learningViewController *const __strong' 

Я не понимаю, предупреждающее сообщение и не знать, как избавиться от предупреждения.

Спасибо,

EDIT:

Мой заголовочный файл для класса выглядит следующим образом:

@interface todd_learningViewController : UIViewController <UIApplicationDelegate> 

    - (IBAction)takePicture:(id)sender; 

    @property (weak, nonatomic) IBOutlet UIImageView *pictureView; 

    @end 

Как я должен изменить его?

ответ

16

Сделайте свой класс реализации UINavigationControllerDelegate и это предупреждающее сообщение исчезнет. Все методы этого протокола являются необязательными, поэтому вам не придется изменять класс реализации.

Почему мы должны это делать, это то, что я пытаюсь выяснить, но на данный момент это решение.

+3

Это потому, что 'UIImagePickerController' является подклассом' UINavigationController'. «Делегат» должен соответствовать обоим протоколам, потому что часть контроллера навигации в устройстве выбора изображений использует одно и то же свойство «делегировать». – omz

+0

спасибо. это помогает – ChicagoSky

-1

Первый реализации ниже делегатов в классе

<UIPickerViewDelegate,UIPickerViewDataSource> 

@interface className : NSObject <UIApplicationDelegate,UIPickerViewDelegate,UIPickerViewDataSource> { 


} 

Это должно быть, как это

@interface todd_learningViewController : UIViewController <UIApplicationDelegate,UIPickerViewDelegate,UIPickerViewDataSource>{ 

    } 

    - (IBAction)takePicture:(id)sender; 

    @property (weak, nonatomic) IBOutlet UIImageView *pictureView; 

    @end 
+0

Просмотреть мое редактирование, я не уверен, что вы имеете в виду ... –

+0

сейчас я отредактировал свой ответ –

+0

Теперь у меня есть четыре ошибки, в моем файле реализации у меня три ошибки в «@implementation todd_learningViewController», которые «Протокол метода не реализован» и семантическая проблема: «неполная реализация». Старая ошибка сохраняется. Благодаря! –

Смежные вопросы