2012-04-18 3 views
6

У меня есть три ViewControllerIOS: уволить двух ViewController

Первый, второй и третий

из вторых открыть Third я использую

Third *third = [[Third alloc]initWithNibName:@"Third" bundle:nil]; 
[self presentModalViewController:third animated:YES]; 
[third release]; 

Теперь я хочу вернуться от третьего к первому; Затем я поставил в viewDidAppear во втором этот код:

[self dismissModalViewControllerAnimated:NO]; 

но на 1 секунду я вижу вторых, и я не хочу его смотреть ... как я могу сделать?

+1

как второй вид добавлен на первый взгляд? –

ответ

15

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

-(void)goToFirstView{ 
     UIViewController *vc = [self parentViewController]; 
    //  UIViewController *vc = [self presentingViewController]; //ios 5 or later 
     [self dismissModalViewControllerAnimated:NO]; 
     [vc dismissModalViewControllerAnimated:YES]; 
} 
4

Как снимается третий вид модальности? Возможно, пользователь нажал кнопку «Готово»? Если это так, то в обработчике кнопки вы хотите отклонить оба.

Вы можете уволить обоих как:

[self dismissModalViewControllerAnimated: YES]; 
[self.presentingViewController dismissModalViewControllerAnimated: NO]; 
+0

Я думаю, что ** анимированные ** параметры должны быть НЕТ, то ДА, см. Ответ rakeshNS – onmyway133

0

Это происходит сог viewDidAppear вызывается каждый раз, прежде чем представление появляется так как только в этом случае вы отклонить его, и он исчезнет ..

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

[self.navigationController popToRootViewControllerAnimated:YES];  

EDIT:

просто думал об этом, это может быть достигнуто с помощью делегирования .. вы сделаете второй делегат третьего и, как только вы уволить thirdviecontroller отправить делегировать message.In это сообщение вызова [self dismissModalViewControllerAnimated:NO];. . и все готово .. (довольно легко, если вы знаете делегацию.)

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