Как отключить камеру и перейти к корневому контроллеру просмотра? - PullRequest
3 голосов
/ 03 апреля 2012

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

Кнопка захвата в представлении инвентаря

   -(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];
      }

и в представлении инвентаризации viewWillAppear

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

Проблема в том, что он перемещается на домашний экран, но происходит сбой приложения. Как это решить?

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

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

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

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

* 1007 EDITED ** * 1008 Вы не должны выполнять анимацию, когда вы не на экране («появится»).

Введите свой код в viewDidAppear как

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

          if(app.navcntr ==1)
          {
                [self.navigationController popToRootViewControllerAnimated:YES];
          }
           app.navcntr=0;
   }
0 голосов
/ 03 апреля 2012

Вам нужно будет отключить контроллер модального вида от контроллера, которому принадлежит UIImagePickerController.

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

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

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

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

Дайте мне знать, если вам удастся избавиться от нее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...