代码之家  ›  专栏  ›  技术社区  ›  rano

如何正确设置启用的NSSegmentedControl

  •  1
  • rano  · 技术社区  · 15 年前

    我想要我的 NSSegmentedControl 启用时选择段,禁用时不选择段(iTunes中视图NSSegmentedControl的行为类型)。

    以下是一些图片:

    imagebam.com 启用并选定

    imagebam.com 正确禁用

    imagebam.com 已禁用但不正确

    (*)我认识到,只要BOOL属性发生变化,我就可以编写一个要调用的函数,在这个函数中,我可以设置所有被取消选择的段或选择适当的段,但我想知道是否有方法通过Cocoa绑定或接口生成器来实现这一点。

    更新: 添加了一些问题的图像

    2 回复  |  直到 7 年前
        1
  •  0
  •   griotspeak    15 年前

    编辑:我不完全确定这一点,但我认为“没有选择占位符”是您的最佳选择。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CocoaBindingsRef/Concepts/BindingsOptions.html%23//apple_ref/doc/uid/20002304-187525

    但我仍然认为,在有条件禁用控件时,必须以编程方式指定“无选择”。

        2
  •  0
  •   rano    15 年前

    编程解决方案可以是这样的:

    - (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属性实现自己的setter segmentEnabled 它和 viewSegment