2013-12-08 56 views
1

我有一個方法在我的視圖控制器中調用'getQuoteButton',它是一個連接到按鈕的IBAction方法,每次我點擊按鈕時我都會得到一個隨機引用。如何在每次按下按鈕時創建循環來指定不同的操作?

我爲每次呈現新報價創建了一定的推動畫,而且我還想創建一個循環,每次點擊按鈕時都可以更改動畫,但我不知道如何..

這是我的代碼(NOViewController),這是一個單一視圖的應用程序:

#import "NOViewController.h" 
#include "NOQuotes.h" 

@interface NOViewController() 

@end 

@implementation NOViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.quotes = [[NOQuotes alloc] init]; 

    UIImage *background = [UIImage imageNamed:@"albert"]; 

    [self.backgroundImageView setImage:background]; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (IBAction)getQuoteButton 
{ 

    self.quotesLabel.text = [self.quotes getRandomQuote]; 

    CATransition *animationTran = [CATransition animation]; 
    [animationTran setType:kCATransitionPush]; 
    [animationTran setDuration:0.7f]; 
    [animationTran setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [self.quotesLabel.layer addAnimation:animationTran forKey:@"pushAnimation"]; 

} 


@end 

希望得到任何幫助,讓我知道如果你需要任何其他信息,以便你能幫助:)

回答

1

添加一個整型計數器變量,並在每次按鈕爲p時遞增ushed。將代碼添加到getQuoteButton,檢查計數器的值,設定相應的動畫類型和子類型:

@interface NOViewController() { 
    int numClicks; // <<=== Added 
} 

@end 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.quotes = [[NOQuotes alloc] init]; 

    UIImage *background = [UIImage imageNamed:@"albert"]; 

    [self.backgroundImageView setImage:background]; 
    numClicks = 0; // <<=== Added 
} 

- (IBAction)getQuoteButton 
{ 

    self.quotesLabel.text = [self.quotes getRandomQuote]; 

    CATransition *animationTran = [CATransition animation]; 
    switch (numClicks) { // <<=== Added 
     case 0: 
      [animationTran setType:kCATransitionPush]; 
      [animationTran setSubtype:kCATransitionFromRight]; 
      break; 
     case 1: 
      [animationTran setType:kCATransitionPush]; 
      [animationTran setSubtype:kCATransitionFromLeft]; 
      break; 
     case 2: 
      [animationTran setType:kCATransitionPush]; 
      [animationTran setSubtype:kCATransitionFromTop]; 
      break; 
     ... // And so on; 
     case 13: 
      [animationTran setType:kCATransitionFade]; 
      // Fade has no subtype 
      break; 
    } 
    numClicks = (numClick+1) % 13; // <<=== Added 
    [animationTran setDuration:0.7f]; 
    [animationTran setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [self.quotesLabel.layer addAnimation:animationTran forKey:@"pushAnimation"]; 
} 

可以通過創建兩個陣列或類型/子類型對的數組縮短該代碼,但遞增一個成員變量的想法點擊就是你需要實現這一點。

相關問題