2

タグ 0 のボタンとタグ 12 のボタンの 2 つのボタンと、NSMutableString buttonPressings があります。次が必要です。どちらかのボタンが選択されている場合、または両方が選択されている場合は、文字列の最初の数字を 1 に設定します。どちらも選択されていない場合は、0 に設定します。

私のコードは次のとおりです。

- (IBAction)buttonPressed:(UIButton *)button {
button.selected = !button.selected;

if ((button.tag==0 && button.selected) || (button.tag==12 && button.selected))
{
    NSRange range = {0,1};
    [buttonPressings replaceCharactersInRange:range withString:@"1"];
}

else if ((button.tag==0 && !button.selected) && (button.tag==12 && !button.selected))
{
     NSRange range = {0,1};
    [buttonPressings replaceCharactersInRange:range withString:@"0"];
}

}

動いていない。ここで何が問題なのですか?ありがとうございました!

4

2 に答える 2

1

ボタンを押すだけで通知されるので機能しません。たとえば、タグ 0 のボタンを押すbuttonPressed:と、ボタン 0 を引数としてメソッドが呼び出されます。ボタンが if 式で 2 回選択されているかどうかをテストしています: button.selected。ただし、どちらの場合も、最近押されたボタンのみがチェックされます。

if ((button.tag==0 && button.selected) || (button.tag==12 && button.selected))

各ボタンの状態を個別にテストする必要があります...たとえば、ボタンへのポインターを格納する2つのアウトレット変数を作成できます。それをView Controllerヘッダーファイルに入れます:

@property (weak, nonatomic) IBOutlet UIButton *button0;
@property (weak, nonatomic) IBOutlet UIButton *button12;

次に、レイアウト デザイナーを使用して、アウトレットをそれらのボタンに接続します。その後、それらのいずれかの .selected 属性にアクセスできます。

- (IBAction)buttonPressed:(UIButton *)button {
    button.selected = !button.selected; // i'm not sure of this line

    if ((button.tag==0 || button.tag==12)
    {
        if( button0.selected || button12.selected )
        { // one of them is selected
            NSRange range = {0,1};
            [buttonPressings replaceCharactersInRange:range withString:@"1"];
        } else { // none is selected
            NSRange range = {0,1};
            [buttonPressings replaceCharactersInRange:range withString:@"0"];
        }      
    }
}

または、これらのアウトレットを避けたい場合は、この質問を確認してください。たとえば、タグによっていくつかの UIButton などのビューを取得できます。ビュー コントローラにビュー属性がある場合、次のように記述できます。

- (IBAction)buttonPressed:(UIButton *)button {
    button.selected = !button.selected; // i'm not sure of this line

    if ((button.tag==0 || button.tag==12)
    {
        UIButton *button0 = (UIButton *)[self.view viewWithTag:0];
        UIButton *button12 = (UIButton *)[self.view viewWithTag:12];

        if( button0.selected || button12.selected )
        { // one of them is selected
            NSRange range = {0,1};
            [buttonPressings replaceCharactersInRange:range withString:@"1"];
        } else { // none is selected
            NSRange range = {0,1};
            [buttonPressings replaceCharactersInRange:range withString:@"0"];
        }      
    }
}
于 2013-08-01T12:32:47.147 に答える