2013-03-02 1 views
0

Я взял какой-то код из других вопросов, но я должен делать что-то шаткий. Приложение переходит с первого взгляда на третье. Чего я хочу достичь:iOS - Как выполнить два перехода последовательно?

ViewController 1 Изображение 1 - загрузка с изображением. Быстро Поперечное disolves в ViewController 1 изображение 2.

ViewController 1 Изображение 2 - переворачивается ViewController 2.

Поперечного disolve происходит, но берет меня к VC2. Я пробовал это большую часть дня. Пришло время попросить о помощи, пока я сажусь в ванну.

Вот что я делаю:

- (void)viewDidLoad 

     { 
      NSLog(@"%s", __FUNCTION__); 
      [super viewDidLoad]; 
     } 

     - (void)viewDidAppear:(BOOL)animated { 
      NSLog(@"%s", __FUNCTION__); 

      sleep (2); 
      [self transition1]; //showing image 1 
     } 

     - (void) transition1 { 
      NSLog(@"%s", __FUNCTION__); 
      /* 
      [UIView transitionFromView:firstView 
          toView:secondView 
         duration:3.0 
         options:UIViewAnimationOptionTransitionCrossDissolve 
         completion:^(BOOL finished) { 
          [firstView removeFromSuperview]; 
         }]; 
      */ 

      //this transition doesn't happen 

UIImage * secondImage = [UIImage imageNamed:@"image2.png"]; 

[UIView transitionWithView:self.firstView 
         duration:5.0f 
         options:UIViewAnimationOptionTransitionCrossDissolve 
         animations:^{ 
          self.imageView.image = secondImage; 
         } completion:NULL]; 



      sleep (2); 
      [self transition2]; 
     } 

     - (void) transition2 { 
      NSLog(@"%s", __FUNCTION__); 
      self.patterns = [[PatternViewController alloc] initWithNibName:@"PatternView_iPad" bundle:nil]; 
      self.patterns.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
      [self presentViewController:patterns animated:YES completion:nil]; 
     } 

Спасибо за любую помощь.

UPDATE

Я обновил свой код за предложения Moxy действуйте следующим образом:

- (void)viewDidAppear:(BOOL)animated { 
    NSLog(@"%s", __FUNCTION__); 
    [self performSelector:@selector(transition1) 
      withObject:nil 
      afterDelay:2.0f]; 
} 

-(void)transition1 
{ 
    NSLog(@"%s", __FUNCTION__); 
    UIImage * secondImage = [UIImage imageNamed:@"image2.png"]; 
    [UIView transitionWithView:self.firstView 
       duration:5.0f 
       options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
          self.imageView.image = secondImage; 
       } 
       completion:^(BOOL finished){ 
          [self performSelector:@selector(transition2) 
             withObject:nil 
             afterDelay:2.0f]; 
       }]; 
} 

-(void)transition2 
{ 
    NSLog(@"%s", __FUNCTION__); 
    self.patterns = [[PatternViewController alloc] initWithNibName:@"PatternView_iPad" 
              bundle:nil]; 
    self.patterns.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentViewController:patterns 
       animated:YES 
       completion:nil]; 
} 

ответ

3

Все, что вам нужно сделать, это начать свой второй анимации в блоке завершения работы первой анимации в. Sleep() - это то, что вы, вероятно, не должны использовать.

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    NSLog(@"%s", __FUNCTION__); 
    [self performSelector:@selector(transition1) 
       withObject:nil 
       afterDelay:2.0f] 
} 

-(void)transition1 
{ 
    NSLog(@"%s", __FUNCTION__); 
    UIImage * secondImage = [UIImage imageNamed:@"image2.png"]; 
    [UIView transitionWithView:self.firstView 
         duration:5.0f 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
          self.imageView.image = secondImage; 
        } 
        completion:^(BOOL finished){ 
          [self performSelector:@selector(transition2) 
             withObject:nil 
             afterDelay:2.0f] 
        }]; 
} 

-(void)transition2 
{ 
    NSLog(@"%s", __FUNCTION__); 
    self.patterns = [[PatternViewController alloc] initWithNibName:@"PatternView_iPad" 
                  bundle:nil]; 
    self.patterns.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentViewController:patterns 
         animated:YES 
        completion:nil]; 
} 
+0

Moxy, спасибо за это. Я получаю пустой экран в течение секунды, а затем перейду к шаблону VC. Я уверен, что изображения есть. –

+1

Установили ли вы первое изображение? – Moxy

+0

ой человек, вот и все !!! Огромное спасибо. Должно быть, он потерялся в моем взломе. –