1

ストーリーボードに配置し、UISwitchそれを実装ファイルのアウトレットに接続し、valueChanged:メソッドをコントロールイベント「値が変更されました」に接続しました。ただし、オンからオフではなく、オフからオンに切り替えたときにのみ呼び出されます。

これが私のコードです:

ViewController.h

@interface splitViewController : UIViewController
@property (weak, nonatomic) IBOutlet UISwitch *tipIncluded;

@end

ViewController.m:

- (IBAction)valueChanged:(UISwitch *)sender {
    NSLog(@"3");
    if (_tipIncluded.isOn==YES){
        NSLog(@"2");
        _tipIncluded.on=NO;
        _tip.text=@"";
        _tip.backgroundColor = [UIColor whiteColor];

    }
    if (_tipIncluded.isOn==NO){
        NSLog(@"1");
        _tipIncluded.on=YES;
        _tip.text=@"0";
        _tip.backgroundColor = [UIColor lightGrayColor];
        _tip.textColor = [UIColor blackColor];
    }

}

このメソッドをオフからオンに切り替えたときにのみこのメソッドを呼び出していることがわかっています。これは、メソッドをそのように切り替えたときに、メソッドの最後で NSLog から 3 しか取得しないためです。

4

2 に答える 2

5

イエスかノーかで何かを比較してはいけません:

if (_tipIncluded.isOn==YES){
if (_tipIncluded.isOn==NO){

そのコードは間違っています。またisOn、UISwitch のプロパティはありません。

コードを簡素化します。if (_tipIncluded.on)else(または)と言うだけif (!tipIncluded.on)です。

また、あなたがしていることはナッツです。ユーザーがスイッチをオンに切り替えた瞬間に、すぐにオフに切り替えます。逆もまた同様です。これにより、スイッチを動かすことができなくなります。

于 2013-04-02T23:11:09.053 に答える
0

And remember to put an outlet on the switch too. This has worked for me. Just make sure to put a default value first. ON maybe.

[mySwitchOutlet setOn:YES animated:YES];

- (IBAction)mySwitch:(UISwitch *)sender {

    if ([sender isOn])
    {
         NSLog(@"ON");

    }else{
         NSLog(@"OFF");
    }

}
于 2013-04-02T23:39:40.070 に答える