UINavigationView Проблема - PullRequest
       14

UINavigationView Проблема

0 голосов
/ 01 августа 2011

Я строю контроллер представления навигации в приложении на основе панели вкладок.В контроллере приложение представляет вид карты с некоторыми аннотациями.На панели навигации есть панель кнопок «Список».Когда пользователь нажимает кнопку, табличное представление, содержащее список аннотаций, будет помещено в стек навигации.В табличном представлении я также реализую пользовательскую кнопку панели, если пользователь нажимает кнопку, представление карты будет вставлено в контроллер навигации.

Здесь возникает проблема, это приложение работает нормально, но если я нажимаю кнопку «Список» и после загрузки контроллера просмотра таблицы, я переключаюсь обратно в вид карты, нажимая кнопку «Карта», чтобы вернуться назад,затем переключите взгляды, как это несколько раз.Сначала представление переключается нормально, но после нескольких кругов (после нескольких тестов это число равно 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];

1 Ответ

0 голосов
/ 01 августа 2011

Кажется, вы используете контроллер навигации приложения Delegate, в то время как вы должны использовать self.navigationController для push и pop. Также нет необходимости использовать блок анимации, вы можете использовать modalTransitionStyle для эффекта флип. Попробуйте нажать viewController, используя self.navigationController.

...