1

私はすでに UISwitches についてすべて読んだことがありますが、私の状況ではそれらを理解できないようです。2 つの UISwitch があります。私のコードが機能するためには、そのうちの 1 つだけを ON にすることができます。どうすればこれを達成できますか?

これまで私が試した...

MyClass.h

-(IBAction)sufSwitchChanged:(id)sender;

MyClass.m

-(IBAction)preSwitchChanged:(id)sender {
UISwitch *whichSwitch = (UISwitch *)sender;
BOOL setting = whichSwitch.isOn;
[newsPre setOn:setting animated:YES];
[techPre setOn:setting animated:YES];
}

....これは機能しましたが、両方のスイッチをオンまたはオフにしました。両方が同時にオンになるのを防ぐ方法を理解する必要があります。

4

2 に答える 2

3

両方の UISwitches を登録して、他のスイッチに対するUIControlEventValueChanged通知を観察します。何かのようなもの:

- (void)viewDidLoad { // or whatever method is appropriate
    UISwitch *a = <# initialize a #>;
    UISwitch *b = <# initialize b #>;

    [a addTarget:self action:@selector(toggleB:)   
         forControlEvents:UIControlEventValueChanged]; 

    [b addTarget:self action:@selector(toggleA:)   
         forControlEvents:UIControlEventValueChanged]; 
}

- (IBAction)toggleA:(id)sender {
    [b setOn:NO animated:YES];
}

- (IBAction)toggleB:(id)sender {
    [a setOn:NO animated:YES];
}

この関係は、Interface Builder で設定することもできます。

于 2011-04-11T03:19:51.637 に答える
0

ここで両方のスイッチを同じ値に設定する方法に注意してください。

[newsPre setOn:setting animated:YES];
[techPre setOn:setting animated:YES];

どちらが送信者であるかを確認し、もう一方を の反対に設定しsettingます。そのためには、各スイッチにタグを設定するか、サブクラス化する必要があります。どのスイッチがどれであるかを検出する方法の詳細については、こちらの投稿を参照してください。

于 2011-04-11T03:05:00.947 に答える