每次我在模拟器中将UISwitch切换为开启或关闭时,即使其中一个开关打开,它仍会返回false。我甚至尝试添加
self.switch1.on = true;
在checkSwitch1Changed的if语句中。
这是我在.m文件中的代码。
- (IBAction)checkSwitch1Changed:(id)sender {
if (self.switch1.on)
{
self.switch2.on = NO;
self.switch3.on = NO;
self.switch4.on = NO;
}
...
}
- (IBAction)checkSwitch2Changed:(id)sender {
if (self.switch2.on)
{
self.switch1.on = NO;
self.switch3.on = NO;
self.switch4.on = NO;
}
...
}
- (IBAction)checkSwitch3Changed:(id)sender {
if (self.switch3.on)
{
self.switch1.on = NO;
self.switch2.on = NO;
self.switch4.on = NO;
}
...
}
- (IBAction)checkSwitch4Changed:(id)sender {
if (self.switch4.on)
{
self.switch1.on = NO;
self.switch2.on = NO;
self.switch3.on = NO;
}
...
}
这是我在.h
中的代码@property (weak, nonatomic) IBOutlet UISwitch *switch1;
@property (weak, nonatomic) IBOutlet UISwitch *switch2;
- (IBAction)checkSwitch1Changed:(id)sender;
- (IBAction)checkSwitch2Changed:(id)sender;
//********
@property (weak, nonatomic) IBOutlet UISwitch *switch3;
@property (weak, nonatomic) IBOutlet UISwitch *switch4;
- (IBAction)checkSwitch3Changed:(id)sender;
- (IBAction)checkSwitch4Changed:(id)sender;
如果我使用该视图控制器发送数据,这实际上可以工作并发送回true。但我试图从另一个视图控制器访问此数据,它发回false。我使用此代码从其他视图控制器访问数据。
//import data from SetupController'
SetupController *setupController = [[SetupController alloc] initWithNibName:@"SetupController" bundle:nil];
...
Firebase *postRef = [savedRef childByAppendingPath: @"Switches"];
NSDictionary *post1 = @{
@"Check1": @(setupController.self.switch1.on),
答案 0 :(得分:0)
您还需要将开关设置为“开”,而不是收听以查看它是否已开启(如果有意义,则不先设置)。
我确信有一个更优雅的方式来做这个(这是一个但很长时间在这里啰嗦),但你应该明白这个方法,如果你把全部挂起来,这个方法应该可行到一个 IBAction
并将方法的sender
从id
更改为UISwitch
。
(当然你不需要只使用一个 IBAction,但如果你这样做会更有意义,而不是4个动作都想做同样的事情)
- (IBAction)switchPressed:(UISwitch *)sender {
if (sender==self.switch1) {
self.switch1.on = YES;
self.switch2.on = NO;
self.switch3.on = NO;
self.switch4.on = NO;
}
if (sender==self.switch2) {
self.switch1.on = NO;
self.switch2.on = YES;
self.switch3.on = NO;
self.switch4.on = NO;
}
if (sender==self.switch3) {
self.switch1.on = NO;
self.switch2.on = NO;
self.switch3.on = YES;
self.switch4.on = NO;
}
if (sender==self.switch4) {
self.switch1.on = NO;
self.switch2.on = NO;
self.switch3.on = NO;
self.switch4.on = YES;
}
}
答案 1 :(得分:0)
您是否尝试检查isOn
属性,而不是on
?
if (self.switch1.on)
变为
if (self.switch1.isOn)
同时检查与交换机关联的IBAction是否为
ValueChanged
事件,并且参考插座已正确链接。