Перевернуть viewController только переворачивает в первый раз

Я переключаюсь на информационное представление на задней стороне. У меня это переворачивается, и у меня есть навигационная панель на другой стороне, чтобы вернуть меня домой к исходному виду (что было проблемой, когда я пытался использовать модальный режим).

Моя проблема сейчас в том, что это работает только в первый раз: я нажимаю кнопку информации, я переворачиваюсь на обратную сторону. Я нажимаю кнопку "Назад" и могу без проблем перевернуться.

Но, если я снова нажму на эту кнопку информации, она переместится в представление информации вместо того, чтобы перевернуться. Отскок все еще в порядке. Если я оставляю корневое представление и иду в другое место и возвращаюсь, оно снова переворачивается правильно. В методе, который вызывается, когда я нажимаю кнопку информации:

InfoViewController *controller = [[[InfoViewController alloc] init] autorelease];
[UIView beginAnimations:@"animation" context:nil];
[self.navigationController pushViewController: controller animated:NO]; 
[UIView setAnimationDuration:0.8]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations];

Спасибо за вашу помощь!

2 ответа

Решение

Где вы инициализируете InfoViewController? так как каждый раз, когда вы заходите в Root, он инициализируется и работает нормально... Когда вы нажимаете назад, это не так... таким простым решением будет написать этот код в viewWillAppear... который вызывается каждый раз, когда вы посещаете Посмотреть..

Надеюсь это поможет..

Вот немного более новая реализация, которая использует блоки из более новых API UIView и использует ARC.

Вот как вы нажимаете на новый экран:

InfoViewController *controller = [[InfoViewController alloc] init];
[self.navigationController pushViewController:controller animated:NO];


[UIView transitionFromView:self.view
                    toView:controller.view
                  duration:0.8f
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                completion:^(BOOL finished) {

    // Add completion stuff here

}];

И вот фрагмент для отклонения этого:

[self.navigationController popViewControllerAnimated:NO];

[UIView transitionFromView:controller.view
                    toView:self.view duration:0.8f
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:^(BOOL finished) {

    // Add completion stuff here

}];
Другие вопросы по тегам