У меня есть NSButton, установленный как переключатель (вкл./выкл.) в моем приложении. Когда я нажимаю кнопку, она работает нормально, но когда я пытаюсь программно установить ее с помощью [toggleButton setEnabled:YES];
, это не дает никакого эффекта.
код:
- (void)awakeFromNib {
defaults = [NSUserDefaults standardUserDefaults];
NSString *toggleValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"toggleActive"];
if (toggleValue == nil) toggleValue = @"YES";
if ([toggleValue isEqualToString:@"YES"]) {
[defaults setObject:@"YES" forKey:@"toggleActive"];
isOn = YES;
[toggleButton setEnabled:YES];
}
if ([toggleValue isEqualToString:@"NO"]) {
[defaults setObject:@"NO" forKey:@"toggleActive"];
isOn = NO;
[toggleButton setEnabled:NO];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (IBAction)toggleButton:(id)sender {
if( isOn ) {
[self stopFunction: (NSButton *)sender];
isOn = NO;
[defaults setObject:@"NO" forKey:@"toggleActive"];
} else {
[self startFunction (NSButton *)sender];
isOn = YES;
[defaults setObject:@"YES" forKey:@"toggleActive"];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
*toggleActive
YES или NO get хранятся в NSUserDefaults (что отлично работает); Я хочу запомнить последнее состояние кнопки, когда пользователь повторно открывает приложение.
setEnabled
, вы установите только то, может ли пользователь взаимодействовать с кнопкой. Тогда какsetState
позволит вам делать то, что вы хотите: вкл/выкл. - person Larme   schedule 17.04.2014[setAlternateImage:(img)];
setState:NSOnState];
и все тот же результат. - person ctfd   schedule 17.04.2014toggleButton.state = myBoolValue ? NSOnState : NSOffState
- person l --marc l   schedule 06.10.2016