1

5つのテキストがあるとしましょう。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"
4

2 に答える 2

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]];
        }

    }

}
于 2013-08-26T21:39:00.553 に答える
2

基本的な考え方は次のとおりです。実装は簡単なので、正確なコードは投稿しません。自分で学ぶのに役立つからです。

1.すべての文字列をに追加しますNSArray

2. InterfaceBuilder を使用してビューに 2 つのボタンを追加し、コードにリンクします。

3. ビューにラベルを追加し、コードにリンクします。

4.intプロパティを作成し、それを呼び出しますcounter

5.ユーザーが「次へ」を押すと、次のことが必要になります。

5.1 カウンターを 1 増やします。

5.2 カウンターが配列の長さよりも大きいことを確認します。

5.3 カウンター > 配列の長さの場合、0 に戻してループすることができます。

5.4 カウンター <= 配列の長さの場合、何もしません。

5.5 カウンター インデックスで配列から文字列を取得する

5.6 #3 テキストで作成したラベルを、取得した文字列に設定します。

6.ユーザーが「前へ」を押すと、次のことが必要になります。

6.1 カウンターを 1 減らします。

6.2 カウンターが >= 0 であることを確認する

6.3 カウンター < 0 の場合、配列の長さに等しく設定できるため、ループします。

6.4 カウンター <= 0 の長さの場合、何もしません。

6.5 カウンター インデックスで配列から文字列を取得する

6.6 #3 テキストで作成したラベルを、取得した文字列に設定します。

于 2013-08-26T21:26:13.127 に答える