Я строю контроллер представления навигации в приложении на основе панели вкладок.В контроллере приложение представляет вид карты с некоторыми аннотациями.На панели навигации есть панель кнопок «Список».Когда пользователь нажимает кнопку, табличное представление, содержащее список аннотаций, будет помещено в стек навигации.В табличном представлении я также реализую пользовательскую кнопку панели, если пользователь нажимает кнопку, представление карты будет вставлено в контроллер навигации.
Здесь возникает проблема, это приложение работает нормально, но если я нажимаю кнопку «Список» и после загрузки контроллера просмотра таблицы, я переключаюсь обратно в вид карты, нажимая кнопку «Карта», чтобы вернуться назад,затем переключите взгляды, как это несколько раз.Сначала представление переключается нормально, но после нескольких кругов (после нескольких тестов это число равно 3), когда я снова нажимаю кнопку «Список», проблема выглядит следующим образом: Представление таблицы, кажется, помещено в стек (с помощью кнопки «Назад»).отображается на панели навигации), но табличное представление не отображается, это все еще отображение карты.Если я сейчас нажму кнопку «Назад», контроллер корневого представления в контроллере навигации показывает, но когда я хочу переключиться обратно на дочерний контроллер представления (контроллер табличного представления), приложение завершает работу.
Извините, я не могу вставитьизображение в этом вопросе, но вы можете создать проблемный скриншот здесь: http://i.stack.imgur.com/hNYsX.png
Вот код, который я переключаю между контроллерами представления:
В корневом контроллере представления контроллера представления навигации:
ListViewController *flipListViewController = [[ListViewController alloc]initWithStyle:UITableViewStylePlain];
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
UINavigationController *navController = [delegate navigationController];
//Flip Animation
[UIView beginAnimations:nil context:nil];
[navController pushViewController:ListViewController animated:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:navController.view cache:NO];
[UIView commitAnimations];
[navController release];
[flipListViewController release];
Здесь я настраиваю анимацию перехода.В дочернем представлении (контроллере табличного представления) я использую следующий код для вызова корневого контроллера представления.
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
[self.navigationController popViewControllerAnimated:NO];
[UIView commitAnimations];