Программно определяя NSSegmentedCell - PullRequest
3 голосов
/ 05 августа 2010

Я немного озадачен тем, как инструктировать программно созданный NSSegmentedControl использовать экземпляр подкласса NSSegmentedCell.

Если я хочу использовать подклассы NSSegmentedCell на NSSegmentedControl построенный с использованием IB, это будет так же просто, как сделать следующее:

  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.: - (

Это должно быть возможно, хотя ... как-то ...

1 Ответ

0 голосов
/ 29 марта 2014

Вроде поздно, но не перезаписать ли работу cellClass?

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