0

到了这一点,我有 10 个按钮,我在每个按钮内的 Title 中写了一个数字,即 0 到 9。我在这里的问题是,我如何切换按钮功能,只要说当我按下数字 0 时,值将在 showLabel.text 中显示为 0,并且按钮处于选中状态,但是当我再次按下它时,showLabel.text 中的数字消失了,并且按钮变回正常状态。我使用下面的代码,但它不能解决我的问题。我的意思是,只是说我选择了数字“1、5、7、8”并且我想取消选择数字 5,使用下面的代码我的 showLabel 会将所有数字替换为无而不是“1、7、8”。所以我认为使用这段代码不是一个好主意。

-(IBAction)numberBtn:(UIButton *)sender
{
    UIButton *button = (UIButton *)sender;
    [button setTitle:@"X" forState:UIControlStateSelected];
    button.selected = !button.selected;
    if (button.selected)
    {
        number = sender.currentTitle;
        showLabel.text = [showLabel.text stringByAppendingFormat:number];
    }
    else
    {
        showLabel.text = [NSString stringWithFormat:@""];
    }
}

有没有办法做到这一点?节日快乐。

4

2 回答 2

0

改为这样做:

- (IBAction)numberBtn:(UIButton *)sender {
    sender.selected = !sender.selected;
    if (sender.selected)
    {
        NSString *number = sender.currentTitle;
        showLabel.text = [showLabel.text stringByAppendingString:number];
    }
    else
    {
        NSString *newString;
        NSString *number = sender.currentTitle;
        NSString *string = showLabel.text;
        for (int i = 0; i<string.length; ++i) {
            NSString *sub = [string substringWithRange:(NSRange){i, 1}];
            if ([sub isEqualToString:number]) {
                newString = [string substringToIndex:i];
                newString = [newString stringByAppendingString:[string substringFromIndex:i+1]];
            }
        }
        showLabel.text = newString;
    }
    [sender setTitle:@"X" forState:UIControlStateSelected];

}
于 2012-08-30T17:14:36.573 回答
0

出色地。认为创建一个由 10 个布尔值组成的数组并且每次按下按钮时都是个好主意 - 您只需要在布尔数组中切换相应的值并使用“for”循环更新您的标签:

for (int nn=0; nn<10; ++nn)  if (boolVals[nn])  [myString appendFormat @"%d ", nn];
于 2012-08-26T07:59:41.690 回答