перевернуть viewController только переворачивает в первый раз - PullRequest
1 голос
/ 04 ноября 2010

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

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

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

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 ]

1 голос
/ 04 ноября 2010

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

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

0 голосов
/ 19 декабря 2012

Вот немного более новая реализация, которая использует блоки из более новых 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

}];
...