0

要するに、私は10個のボタンを持っていて、すべてのボタン内のタイトルに数字、つまり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

良い。10個のブール値の配列を作成し、ボタンが押されるたびに、ブール配列の対応する値を切り替え、「for」ループを使用してラベルを更新するだけでよいと思います。

for (int nn=0; nn<10; ++nn)  if (boolVals[nn])  [myString appendFormat @"%d ", nn];
于 2012-08-26T07:59:41.690 に答える
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 に答える