如何使用UIButton多次更改标签?

时间:2013-07-12 17:28:46

标签: ios uibutton

我希望有一个UIButton可以更改系列中标签的文字。例如,我可能有一个标有hello的标签。

然后,当我按下按钮时,它将变为What's up?

但是,第二次点按相同按钮会将标签更改为Nuttin' much!

我知道如何让标签的文字更改一次,但如何使用相同的按钮多次更改?最好是大约20到30个单独的文本。

提前谢谢! :d

3 个答案:

答案 0 :(得分:2)

这是非常开放的。考虑向您的类添加属性,该属性是字符串数组的索引。每次按下按钮都会增加数组(数组的模数),并使用相应的字符串更新按钮。但是还有很多其他方法可以做到这一点......

答案 1 :(得分:1)

当应用程序用完短语时会发生什么?重来?典型的方法看起来像这样。

@property (strong, nonatomic) NSArray *phrases;
@property (assign, nonatomic) NSInteger index;

- (IBAction)pressedButton:(id)sender {

    // consider doing this initialization somewhere else, like in init
    if (!self.phrases) {
        self.index = 0;
        self.phrases = @{ @"hello", @"nuttin' much" };  // and so on
    }

    self.label.text = self.phrases[self.index];
    self.index = (self.index == self.phrases.count-1)? 0 : self.index+1;
}

答案 2 :(得分:0)

在viewDidLoad方法中,创建一个包含字符串的数组来保存标签。然后创建一个变量来跟踪应该将哪个对象设置为当前标签。设置初始文本:

NSArray *labelNames = [[NSArray alloc] initWithObjects:@"hello",@"what's up?", @"nuttin much"];
int currentLabelIndex = 0;
[label setText:[labelNames objectAtIndex:currentLabelIndex]];

然后在点击按钮时调用的方法中,更新文本和索引。

- (IBAction) updateButton:(id)sender {

    // this finds the remainder of the division between currentLabelIndex+1 and labelNames.count. If it is less than the count, its just the index. If its equal to the count we go back to the beginning of the array.
    currentLabelIndex = (currentLabelIndex+1)%labelNames.count;

    [label setText:[labelNames objectAtIndex:currentLabelIndex]];

}