2015-03-25 2 views
0

У меня есть 2 экрана:dismissViewController очистить экран, но не освобождает

Первый вызов второй со следующим кодом:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:kDetailSegue]) { 
     [NSThread detachNewThreadSelector:@selector(loadingThread) toTarget:self withObject:nil]; 
     TagDetailControllerViewController* detailController = segue.destinationViewController; 
     detailController.location = self.recentLocation; 
    } 
} 

kDetailSegue это настоящий модально - презентация по умолчанию - переход: по умолчанию

Во второй ViewController я пытаюсь закрыть экран:

[self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
+0

Вы уверены, что хотите убрать свой «навигационный контроллер» или ваш представленный viewController? – itsji10dra

+0

Я хочу уволить текущий viewController (второй вид) – Chucrutes

+0

ypu представляют его модально и отклоняют с помощью navigationcontroller, это не будет работать, потому что ваш контроллер просмотра не находится в стеке контроллера навигации. – iAnurag

ответ

0

Не ясно, что вы хотите, чтобы отклонить в вашем втором контроллере представления, поэтому я попытаюсь представить наиболее вероятные сценарии:

  • Если вы хотите, чтобы закрыть контроллер представления, представленный модально (TagDetailControllerViewController) , вам тоже нужно отклонить его.

    Это может быть достигнуто путем вызова в вашем TagDetailControllerViewController себе:

    [self dismissViewControllerAnimated:YES completion:nil]; 
    

    Который работает, потому что, согласно Apple's documentation:

    Если вы вызываете этот метод на самом предъявленного контроллере представления, он автоматически пересылает сообщение контроллеру представления.

    Кроме того, если вы хотите, чтобы отклонить его непосредственно от контроллера представления, который вы использовали, чтобы представить его, вы можете сделать это следующим образом:

    [self.presentedViewController dismissViewControllerAnimated:YES completion:nil]; 
    
  • Наконец, если то, что вы хотите, чтобы уволить посмотреть, что была отодвинута в вашем UINavigationController, то вы можете просто вытолкнуть его из стека:

    [self.navigationController popViewControllerAnimated:YES]; 
    

Как вы можете видеть , способ отклонения зрения действительно зависит от того, как он был представлен.

+0

Согласен, если вы хотите отклонить контроллер, нажатый с контроллера навигации, вам нужно сделать: [self.navigationController popViewControllerAnimated: TRUE]; – jomafer

0

попробуйте это

[self.presentingViewController.presentingViewController rejectViewControllerAnimated: YES complete: NULL];

+1

'ПредставленныйViewController'? – Sulthan

+0

Current viewcontroller –

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