Почему вы не используете UINavigationController
? Вы можете использовать popToRootViewControllerAnimated:
и popViewControllerAnimated:
для своих целей.
Как таковой, если вы делаете,
[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES];
Вы должны вернуться к 1
.
Выдержка из dismissModalViewControllerAnimated
,
Если вы последовательно представляете несколько контроллеров модальных представлений и, таким образом, строите стек контроллеров модальных представлений, то при вызове этого метода на контроллере представлений ниже в стеке его непосредственный дочерний контроллер представлений и все контроллеры представлений выше этого потомка будут отклонены в стеке. Когда это происходит, только самый верхний вид отклоняется в анимационном режиме; любые промежуточные контроллеры представления просто удаляются из стека. Самое верхнее представление отклоняется, используя его модальный стиль перехода, который может отличаться от стилей, используемых другими контроллерами представления ниже в стеке.
Использование контроллера навигации
Чтобы контроллер навигации работал, вместо того, чтобы загружать ваш view1
, вы сделаете это,
View1 *myView = [[[View1 alloc] initWithNibName:@"View1" bundle:nil] autorelease];
UINavigationController * navController = [[[UINavigationController alloc] initWithRootViewController:myView] autorelease]
[mainNavController presentModalViewController:navController animated:YES];
Это предполагает, что view1
было rootViewController
После настройки контроллера навигации вы можете загрузить view2
, например,
View2 *myView = [[View2 alloc] initWithNibName:@"View2" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:myView animated:YES];
[myView release];
В таком случае
Отмена
[self.navigationController popViewControllerAnimated:YES];
Complete
[self.navigationController popToRootViewControllerAnimated:YES];