使用下一个和上一个 UIButton 在 UITextView/UILabel 中更改不同的文本

Posted

技术标签:

【中文标题】使用下一个和上一个 UIButton 在 UITextView/UILabel 中更改不同的文本【英文标题】:Changing through different pieces of text in UITextView/UILabel using next & previous UIButton 【发布时间】:2013-08-26 21:05:30 【问题描述】:

假设我有 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"

【问题讨论】:

什么都试过了 我尝试使用多个 UI 按钮,隐藏和显示它们。不是一种非常有效的做事方式。 【参考方案1】:

这个解决方案可能很好

在.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]];
        

    


【讨论】:

这是一个很好的例子,它改变了字符串末尾的数字,但我正在考虑使用不同的文本,比如“今天很漂亮”和“明天要下雨”。 你需要创建字符串数组...而不是打印数字,你不能在索引处打印数组。【参考方案2】:

这里是基本的想法,因为实现是微不足道的,我不会发布确切的代码,因为它有利于你自己学习。

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

2. 使用 InterfaceBuilder 将两个按钮添加到您的视图并链接到您的代码。

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

4.创建int 属性并将其命名为counter

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

5.1 将计数器增加 1。

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

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

5.4 如果 counter

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

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

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

6.1 将计数器减 1。

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

6.3 如果计数器

6.4 如果计数器

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

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

【讨论】:

感谢您的提示。在我看到红魔的解决方案之前,我设法让它部分工作。绝对是一次很好的学习体验。 我很高兴你能够让它工作。我知道,当有人解释这个概念而不是仅仅抛出代码时,这对我有帮助。

以上是关于使用下一个和上一个 UIButton 在 UITextView/UILabel 中更改不同的文本的主要内容,如果未能解决你的问题,请参考以下文章

使用codeigniter中的下一个和上一个按钮进行分页

在 UIImage 和 UIButton 的图像之间创建标识符

在动态数组中查找并使用下一个和上一个值

如何在 UITableView 中激活下一个和上一个 UITextField?

如何在Java中单击下一个和上一个按钮时显示下一个和上一个记录?

使用php的下一个和上一个按钮[重复]