以编程方式定义NSSegmentedCell

时间:2010-08-05 00:14:10

标签: objective-c subclass nssegmentedcontrol

关于如何指示以编程方式创建的NSSegmentedControl使用NSSegmentedCell的子类实例,我感到有点难过。

如果我想在使用IB构建的NSSegmentedCell上使用子类NSSegmentedControl,那么就像执行以下操作一样简单:

  1. NSSegmentedControl拖到NSView
  2. 点击进入NSSegmentedCell
  3. 在检查器中将类定义分配给子类(例如myCustomCell
  4. 完成工作。

    但是,在以下简化示例中以编程方式创建NSSegmentedControl时,我看不到如何对单元格进行子类化...

    -(void)creatSegmentControl {
    
        if (!mySegmentControl)
            mySegmentControl = [[NSSegmentedControl alloc] 
                                   initWithFrame:NSMakeRect(0,0 400,20)];
    
        [mySegmentControl setSegmentCount:2];
        [mySegmentControl setLabel:@"First" forSegment:0];
        [mySegmentControl setLabel:@"Second" forSegment:0];
        [mySegmentControl setTarget:self];
        [mySegmentControl setAction:@selector(segmentClicked:)];
    }
    

    NSSegmentedControl似乎没有一种方法可以定义要用于它的段细胞实例的类。

    像往常一样,任何和所有帮助都赞赏。

    更新

    尝试实施[mySegmentControl setCellClass:[myCustomCell class],但这也不起作用。我在想,也许它继承了像其他AppKit控件一样设置它的单元类的能力。 : - (

    这必须是可能的......不知怎的......

2 个答案:

答案 0 :(得分:0)

有点晚了,但不会覆盖cellClass的工作?

+ (Class)cellClass
{
    return [YourCustomCellClass class];
}

答案 1 :(得分:0)

属性 cellClass 属于弃用类别。

您需要先创建自定义类的实例并设置 NSControl 的单元属性,然后再进行其他操作(是的 NSSegmentedControl 继承自 NSControl

    NSSegmentedControl* oSegment = [[NSSegmentedControl alloc] init];
    QPDFSegmentedCell* csell = [[QPDFSegmentedCell alloc] init];
    oSegment.cell = csell;
相关问题