我在我的应用中将切换到我的设置视图中,并将其默认为OFF位置。我注意到如果你把它切换到ON,关闭应用程序然后再打开它,开关重置回OFF。我不确定代码是否有问题,或者我是否遗漏了某些东西。这是与viewcontroller.m
中的开关有关的代码-(void)viewDidLoad {
if (kScheduleLocalNotifications) {
if ([Singletons getBoolForKey:kLocalNotificationsEnabled]) {
_weeklyReminderSwitch.on = NO;
} else {
_weeklyReminderSwitch.on = NO;
}
_scrollView.contentSize = CGSizeMake(320.0, 510.0);
} else {
_weeklyReminderSwitchView.hidden = YES;
CGRect versionLabelRect = _versionLabel.frame;
versionLabelRect.origin.y = 431.0;
_versionLabel.frame = versionLabelRect;
_scrollView.contentSize = CGSizeMake(320.0, 455.0);
}
}
如果我将上面的IF语句作为NO / YES运行,它仍然具有相同的行为。如果我将其作为YES / NO运行,则默认情况下处于打开状态,但如果用户将其关闭则保持在OFF位置。
- (IBAction)weeklyReminderSwitchChanged:(id)sender {
if ([Singletons getBoolForKey:kLocalNotificationsEnabled]) {
[Singletons setBoolForKey:kLocalNotificationsEnabled :NO];
[_weeklyReminderSwitch setOn:NO animated:YES];
} else {
[Singletons setBoolForKey:kLocalNotificationsEnabled :YES];
[_weeklyReminderSwitch setOn:YES animated:YES];
}
}
答案 0 :(得分:3)
在if语句的两个分支中将开关状态设置为“off”:
_weeklyReminderSwitch.on = NO;
其中一个应该是YES。
就我个人而言,我认为将值直接分配给交换机会更具可读性且不易出错,例如:
_weeklyReminderSwitch.on = [Singletons getBoolForKey:kLocalNotificationsEnabled];