3

对于如何指示以编程方式创建NSSegmentedControl的使用NSSegmentedCell.

如果我想在使用 IBNSSegmentedCellNSSegmentedControl构建上使用子类,只需执行以下操作即可:

  1. 将一个NSSegmentedControl拖入NSView
  2. 点击进入NSSegmentedCell
  3. 在检查器中将类定义分配给子类(例如myCustomCell

任务完成。

但是,在以下简化示例中以编程方式创建时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 控件一样设置它的单元类的能力。:-(

这一定是可能的,虽然......不知何故......

4

2 回答 2

0

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

+ (Class)cellClass
{
    return [YourCustomCellClass class];
}
于 2014-03-29T19:38:07.487 回答
0

该属性cellClass属于已弃用的类别。

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

    NSSegmentedControl* oSegment = [[NSSegmentedControl alloc] init];
    QPDFSegmentedCell* csell = [[QPDFSegmentedCell alloc] init];
    oSegment.cell = csell;
于 2021-03-12T21:58:08.920 回答