3

Мне нужно нажать контроллер вида на другой контроллер.Push ViewController с модальной анимацией (горизонтальный флип)

menuVC -> VC1 ->VC2 

происходит от menuVC к VC1 не требует анимации, но происходит от VC1 к VC2 и от VC2 к VC1 требует флип animaton произойти.

Однако при переходе от VC2 к menuVC анимации не требуется.

Я использую следующий код:

(от how to push a viewController with flip animation)

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; 
FlashCardVC *flashCardVC = [[FlashCardVC alloc] init]; 
[self.navigationController pushViewController:flashCardVC animated:NO]; 
[UIView commitAnimations]; 

экран выходит полностью пустым, когда я пытаюсь сделать выше.

Что не так?

ответ

15

Вы действительно должны использовать анимацию на основе блоков. Кроме того, если вы создаете контроллер раскадровки из контроллера, который также находится в одной и той же раскадровке, вы можете более легко получить доступ к этой раскадровке с помощью self.storyboard.

-(IBAction)flipToNext:(id)sender { 
    SecondController *next = [self.storyboard instantiateViewControllerWithIdentifier:@"Next"]; 
    [self.navigationController pushViewController:next animated:NO]; 
    [UIView transitionWithView:self.navigationController.view duration:1 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:nil]; 
} 
+0

Любая идея о том, как обновить этот ответ для переходов в стиле iOS 8? – SleepsOnNewspapers

+0

@ hsavit1, Какие переходы в стиле iOS 8 вы спрашиваете? – rdelmar

1

Великий Ответ: Showing pushviewcontroller animation look like presentModalViewController

(код)

//UIViewController *yourViewController = [[UIViewController alloc]init];</s> 

    [UIView beginAnimations: @"Showinfo"context: nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController pushViewController: yourViewController animated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations]; 

Однако это порождало пустой экран также.

Вместо этого, если вы используете раскадровки, то лучше создать экземпляр через раскадровку:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle bundleForClass:[self class]]]; 

YourViewController *yourViewController = [storyboard instantiateViewControllerWithIdentifier:@"yourViewControllerID"]; 

yourViewControllerID устанавливается в раскадровке под инспектором идентичности для yourviewcontroller класса.

+0

Отметьте этот ответ как принятый, чтобы этот вопрос не отображался в списке оставшихся без ответа вопросов. – memmons

 Смежные вопросы

  • Нет связанных вопросов^_^