ボタンを押すだけで通知されるので機能しません。たとえば、タグ 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"];
}
}
}