UISwitch只能单向工作

时间:2013-04-02 23:05:30

标签: ios uiswitch

我有一个UISwitch我放在我的故事板中并将其连接到我的实现文件中的插座,并将valueChanged:方法连接到控件事件“value changed”。但是,只有在我将其从关闭切换为开启时才会调用,而不是从开启切换到关闭。

这是我的代码:

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];
    }

}

我知道它只是在从off变为on时调用这个方法,因为当我以这种方式切换时,我只在方法结束时从NSLog获得3。

2 个答案:

答案 0 :(得分:5)

绝不与YES或NO进行比较:

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

那段代码错了。此外,UISwitch没有isOn属性。

简化您的代码。只需说出if (_tipIncluded.on)else(或if (!tipIncluded.on))。

你所做的也是坚果。 instant 用户将开关切换到ON,您将其立即切换为OFF ,反之亦然。这将无法移动开关!

答案 1 :(得分:0)

记得在开关上放一个插座。这对我有用。只需确保首先设置默认值。也许吧。

[mySwitchOutlet setOn:YES animated:YES];

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

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

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

}