Перевернуть 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
}];