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 将两个按钮添加到您的视图并链接到您的代码。

3.为您的视图添加标签并链接到您的代码。

4.创建一个int属性并调用它counter

5.当用户按下“下一步”时,我们想要:

5.1 将计数器加 1。

5.2 检查以确保计数器高于我们的数组长度。

5.3 如果计数器 > 数组长度,那么我们可以将其设置回 0 以使其循环。

5.4 如果 counter <= array length 那么我们什么也不做。

5.5 在计数器索引处从数组中抓取字符串

5.6 将我们在#3 文本中创建的标签设置为检索到的字符串。

6.当用户按下“上一个”时,我们想要:

6.1 将计数器减 1。

6.2 检查以确保计数器 >= 0

6.3 如果 counter < 0 那么我们可以将它设置为等于我们的数组长度,以便它循环

6.4 如果 counter <= 0 length 那么我们什么也不做。

6.5 在计数器索引处从数组中抓取字符串

6.6 将我们在#3 文本中创建的标签设置为检索到的字符串。

于 2013-08-26T21:26:13.127 回答