我希望我的NSSegmentedControl在启用时选择一个段,在禁用时没有选择任何段( iTunes中的视图NSSegmentedControl所具有的行为类型)。
以下是一些图片:

启用和选定

正确致残

禁用但不正确
(*)我认识到,每当BOOL属性发生变化时,我都可以编写一个函数来调用它,在这个函数中,我可以设置所有被分割的段,或者选择适当的段,但是我想知道是否有办法通过Cocoa绑定或Interface Builder来完成这个任务。
更新:添加了一些问题的图像
发布于 2010-11-13 19:49:03
编程解决方案可以是这样的:
- (void)setSegmentEnabled:(BOOL)enabled{
if (enabled)
{
int vState = [[NSUserDefaults standardUserDefaults] integerForKey:@"SelectedSegmentView"];
[viewSegment setSelectedSegment:vState];
segmentEnabled = YES;
}
else
{
[viewSegment setSelected:NO forSegment:0];
[viewSegment setSelected:NO forSegment:1];
[viewSegment setSelected:NO forSegment:2];
segmentEnabled = NO;
}
}我只是为BOOL属性segmentEnabled实现自己的setter,该属性是与viewSegment绑定的
发布于 2010-11-13 03:27:59
编辑:我不完全确定这一点,但我认为‘没有选择占位符’是你最好的选择。http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CocoaBindingsRef/Concepts/BindingsOptions.html%23//apple_ref/doc/uid/20002304-187525
不过,我仍然认为,在有条件禁用控件时,您必须以编程方式指定没有选择。
https://stackoverflow.com/questions/4169883
复制相似问题