我在我的应用程序中将 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 获取存储在 NSUserDefaults 中(工作正常);我想记住用户重新打开应用程序时的最后一个按钮状态。
最佳答案
setEnabled:仅更改按钮对用户交互的可用性
下面将切换按钮的图像以及将按钮的状态设置为开/关
[toggleButton setState:NSOnState];
[toggleButton setState:NSOffState];
如果您希望在状态更改时采取适当的操作,则还必须调用适当的函数
[toggleButton setState:NSOnState];
[self startFunction:toggleButton];
或者,您可以调用
[toggleButton performClick:self];
但是,这会导致按钮在切换状态时出现短暂的水蓝色阴影(就像您实际单击它一样)。考虑到这一点,我更喜欢前一种方法。
所有这一切都只是我不久前在尝试做同样的事情时所做的一些快速观察(谷歌搜索让我找到了这个线程)。希望这有帮助:)
关于objective-c - NSButton 切换按钮以编程方式更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23118233/