flip 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];

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


person snorkelt    schedule 03.11.2010    source источник


Ответы (2)


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

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

person k-thorat    schedule 03.11.2010
comment
Спасибо, проблема решена! К сожалению, он вызвал еще один вопрос, о котором я спрошу отдельно. Спасибо! - person snorkelt; 04.11.2010

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

}];
person valdyr    schedule 19.12.2012