2013-08-16 3 views
0

У меня есть представление с набором UIButtons. Когда одна кнопка нажата, я хочу, чтобы остальные переводили с экрана, а затем меняли viewcontroller на новое представление. Мои два способа сделать это являются:Переключение на другое представление после завершения набора анимаций

-(IBAction)button1 { 
    [UIView beginAnimations: nil context: nil]; 
    [UIVeiw setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIVewAnimationCurveEaseIn]; 
    button2.transform = CGAffineTransforMakeTranslation(0, 520); 
    [UIView commitAnimations]; 
    [self performSelector:@selector(switchtoview2) withObject:self afterdelay:0.6]; 
} 

-(void)switchtoview2 { 
    View2ViewController *view2 = [[View2ViewController alloc] initWithNibName:nil bundle: nil]; 
    view2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentModalViewController:view2 animated:YES]; 
} 

Но когда я нажимаю на первую кнопку, он просто ломается, не оставляя ничего, чтобы перейти от в отладчике. Как я могу это исправить или, по крайней мере, определить, что пошло не так?

ответ

3

Вы должны использовать методы более новых блоков. У них есть встроенные блоки завершения, которые будут выполнены после завершения анимации.

EDIT: Для вашей ситуации, используйте один, где вы можете дать варианты использовать эту animationCurve:

[UIView animateWithDuration:0.5 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseIn 
       animations:^{ 
        button2.transform = CGAffineTransforMakeTranslation(0, 520); 
       } completion:^(BOOL finished) { 
        [self switchtoview2]; 
       }]; 
+0

Спасибо! Я не был в курсе всего, что может сделать Xcode 4, и это первое приложение для анимации, которое я использовал. Так что спасибо тонне! – Taylor

1

С прошивкой 4, вы должны использовать более новый блок на основе UIView анимации, что делает вас знаете, построил в блоках завершения! Они намного проще в использовании, так как рассмотрение кода Xcode будет генерировать большую часть этого для вас. Просто добавьте код, который вы хотите выполнить после завершения анимации, в блок завершения внизу.

[UIView animateWithDuration:2.0 animations:^{ 
    button2.transform = CGAffineTransforMakeTranslation(0, 520); 
} completion:^(BOOL finished) { 

    View2ViewController *view2 = [[View2ViewController alloc] initWithNibName:nil bundle: nil]; 
    view2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentModalViewController:view2 animated:YES]; 
}]; 
+0

Спасибо! Мне, видимо, нужно чистить новые блоки ... хотя это было от iOS 4! – Taylor

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

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