2013-08-26 50 views
1

假設我有5段文本。我想使用UITextView或UILabel來顯示它。我有一個Next和Previous按鈕來幫助我循環。解決這個問題的最好方法是什麼?使用next和previous UIButton在UITextView/UILabel中更改不同的文本片段

NSString *text1 = @"Hello World 1" 
NSString *text2 = @"Hello World 2" 
NSString *text3 = @"Hello World 3" 
NSString *text4 = @"Hello World 4" 
NSString *text5 = @"Hello World 5" 
+0

嘗試任何事情 –

+0

我嘗試使用多個UIbuttons,隱藏和顯示它們。不是一種非常有效的做事方式。 –

回答

3

這種解決方案可能是在.h文件中

UIButton *nextButton; 
UIButton *backButton; 
UILabel *textLabel; 
NSArray *textStr; 
int counter; 

。M檔

- (void)viewDidLoad 

{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    counter=0; 

    textStr = [[NSArray alloc] initWithObjects:@"Today is rainy", @"Today is sunnt", @"Today is bright", @"Today is gloomy", 
    @"Today is beautifyl", nil]; 

    textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 30, 200, 200)]; 
    textLabel.text= [NSString stringWithFormat:@"%@", [textStr objectAtIndex:0]]; 
    [self.view addSubview:textLabel]; 

    nextButton= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [nextButton addTarget:self 
       action:@selector(btnClicked:) 
    forControlEvents:UIControlEventTouchDown]; 
    nextButton.tag=1; 
    [nextButton setTitle:@"Next" forState:UIControlStateNormal]; 
    nextButton.frame = CGRectMake(120.0, 150, 80, 40.0); 
    [self.view addSubview:nextButton]; 

    backButton= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [backButton addTarget:self 
        action:@selector(btnClicked:) 
     forControlEvents:UIControlEventTouchDown]; 
    backButton.tag=2; 
    [backButton setTitle:@"Previous" forState:UIControlStateNormal]; 
    backButton.frame = CGRectMake(30.0, 150, 80.0, 40.0); 
    [self.view addSubview:backButton]; 

} 
-(void)btnClicked:(UIButton*)btn{ 



    if (btn.tag==1) { 
     NSLog(@"%i", [textStr count]); 
     if (counter<[textStr count]-1) { 
     counter++; 
     NSLog(@"%i", counter); 

     textLabel.text= [NSString stringWithFormat:@"%@", [textStr objectAtIndex:counter]]; 
     } 
    } 
    else{ 
     if (counter>1) { 
     counter--; 
      textLabel.text= [NSString stringWithFormat:@"%@", [textStr objectAtIndex:counter]]; 
     } 

    } 

} 
+0

這是一個很好的例子,它改變了字符串末尾的數字,但我正在考慮有不同的文本,比如「今天很美」和「明天要下雨」。 –

+0

與你需要創建數組的字符串...而不是打印數字,你不能在索引打印數組。 –

+0

我編輯了我的答案...請再次檢查代碼... –

2

這裏的基本思想是,作爲實現很簡單,我不會發布確切的代碼,因爲這將有利於自己學習。

1.將所有字符串添加到NSArray

2.使用InterfaceBuilder爲您的視圖添加兩個按鈕並鏈接到您的代碼。

3.爲您的視圖添加標籤並鏈接到您的代碼。

4.創建int屬性並將其稱爲counter

5.當用戶按「下一步」我們想:

5.1 1

5.2檢查計數器的增加,以確保反比我們的數組的長度更高。

5.3如果計數器>數組長度,那麼我們可以將其設置回0以循環。

5.4 if counter < = array length然後我們什麼都不做。

5.5搶在櫃檯指數

5.6集我們的標籤字符串從數組中我們創建了#3文本檢索到的字符串。

6,當用戶按下 「上一個」 我們想:

6.1 1

6.2檢查減少計數器,確保計數器> = 0

6.3如果計數器< 0那麼我們可以設置它等於我們的陣列長度,所以它循環

6.4如果計數器< = 0長度那麼我們什麼都不做。

6.5搶在櫃檯指數

6.6集我們的標籤字符串從數組中我們創建了#3文本檢索到的字符串。

+0

我會試試看。 –

+0

感謝您的提示。在我看到Red Devil的解決方案之前,我設法部分工作。絕對是一次很好的學習體驗。 –

+0

我很高興你能夠得到它的工作。我知道,當有人解釋這個概念時,它會幫助我,而不是隻是拋出代碼。 – random