使用下一个和上一个 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 中更改不同的文本的主要内容,如果未能解决你的问题,请参考以下文章
在 UIImage 和 UIButton 的图像之间创建标识符
如何在 UITableView 中激活下一个和上一个 UITextField?