2012-04-03 2 views
3

Я создал 3 просмотров. Первый вид дома, второй - инвентарь, а третий - вид сверху. Теперь из главного экрана с помощью pushviewcontroller, я перехожу к экрану просмотра инвентаря. В представлении инвентаря у меня есть одна кнопка захвата. кнопка захвата откроет камеру на overlayview. Теперь проблема в том, что на оверлейном окне есть кнопка, называемая кнопкой «назад», когда я нажимаю эту кнопку, я хочу перейти на главный экран, но для этого мне нужно 1-го опросить камеру. Как это возможно?Как отклонить камеру и перейти к контроллеру корневого представления?

Кнопка захвата в Inventory View

-(IBAction) btnCapture:(id) sender 
    { 
    @try 
    { 
      [self showImagePicker:UIImagePickerControllerSourceTypeCamera]; 
    } 
     @catch (NSException *exception) 
     { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Camera" message:@"Camera is not available " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     } 
} 

В OverlayView кнопки Назад Событие:

-(IBAction)btnBack:(id)sender 
    { 
      app.navcntr=1; 
      [self.delegate didFinishWithCamera]; 
      [self dismissModalViewControllerAnimated:YES]; 
     } 

и Inventory View, viewWillAppear

-(void) viewWillAppear:(BOOL)animated 
    { 
      if(app.navcntr ==1) 
      { 
       [self.navigationController popToRootViewControllerAnimated:YES]; 
      } 
      app.navcntr=0; 
    } 

Этот вопрос он навигации к дому экран, но приложение терпит крах. Как это решить?

Спасибо. enter image description here

+0

Редактировать свой вопрос с помощью какого-либо кода – Tirth

+0

Вы использовали модальный вид для отображения камеры? – Maulik

+0

Crash log пожалуйста. Отправьте журнал сбоев. – Ilanchezhian

ответ

2

Я думаю, вы пытаетесь дважды уволить камеру. Я имею в виду, что метод didFinishWithCamera отклонит его. Удалите строку [self dismissModalViewControllerAnimated:YES];

-(IBAction)btnBack:(id)sender 
    { 
      app.navcntr=1; 
      [self.delegate didFinishWithCamera];    
    } 

EDITED

Вы не должны выполнять анимацию, когда вы не на экране ("появится").

Написать свой код в viewDidAppear как

-(void) viewDidAppear:(BOOL)animated 
    { 
      [super viewDidAppear:animated]; 

      if(app.navcntr ==1) 
      { 
       [self.navigationController popToRootViewControllerAnimated:YES]; 
      } 
      app.navcntr=0; 
    } 
+0

wait_fences: не удалось получить ответ: 10004003 –

+0

@komalmehta: что это? аварийный журнал? – Maulik

+0

@komalmehta: проверьте обновленный ответ – Maulik

0

Вам нужно закрыть модальный контроллер представления от контроллера, к которому принадлежит UIImagePickerController.

-(IBAction)whilePoppingBack:(id)sender{ 
    [controllerWhichContainsPicker dismissModalViewControllerAnimated:YES]; 
} 

// После того как это будет сделано, вы можете успешно перейти на главный контроллер представления метода popToRootViewController.

PS Примечание: поиск контроллераWhichContainsPicker - это еще одна вещь, которая зависит от иерархии представлений, которую вы создали на основе того, что вам нужно уволить это вначале позже. Вам нужно делать другие вещи, такие как навигационное и другое представление.

// Другое дело, что им подозревающий некоторая утечка памяти (как у уже упоминалось здесь: wait_fences: не удалось получить ответ: 10004003) .Try работает инструмент инструменты или NSZombie или NSMallocGaurd с поддержкой и попытаться выяснить вне места утечки, если вышеуказанный код, кажется, не решает проблему.

Сообщите мне, если вы в состоянии избавиться от него!

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

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