我有一个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。
答案 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");
}
}