2014-01-08 3 views
0

Я использую пользовательский UIImagePickerController, и мне нужен UINavigationBar также в том же контроллере, поэтому вместо отображения кнопок захвата камеры по умолчанию я стараюсь использовать пространство в самой панели навигации, на действие кнопки я попытался вызвать метод съемки, но его разбился. какова правильная процедура.iOS: Сбой возникает при использовании метода takePicture

// prepare imagePicker view 
    imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    imagePicker.showsCameraControls = NO; 
    isFront = YES; 
    cameraType = @"front"; 

    UIBarButtonItem *takePictureButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:imagePicker.view action:@selector(captureImage:)]; 

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(flip:)]; 

self.navigationItem.rightBarButtonItems = [[NSArray alloc]initWithObjects:takePictureButton,cancelButton, nil]; 

-(void)captureImage:(id)sender 
{ 
    [imagePicker takePicture]; 
} 

- (void) flip: (id) sender 
{ 
    if(isFront) 
    { 
     cameraType = @"front"; 
     isFront = NO; 
     imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    } 
    else 
    { 
     isFront = YES; 
     cameraType = @"rear"; 
     imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 

    } 
} 
+0

Была ли она протестирована на реальном устройстве? – ldindu

+0

Вам также необходимо добавить код для - (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info; метод. Может быть, может быть что-то для краха. –

+0

Я протестировал в реальном устройстве его разбился, и я включил все его методы делегирования. – Logunath

ответ

3

Вы пытаетесь вызвать метод от imagePicker.view, который не указан там.

Заменить

UIBarButtonItem *takePictureButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:imagePicker.view action:@selector(captureImage:)]; 

С

UIBarButtonItem *takePictureButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(captureImage:)]; 
+1

Большое спасибо, теперь это сработало. – Logunath

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