Как я могу добавить подкласс в NSTableCellView?
Я добавляю представление ячейки таблицы изображений и текста в NSTable в IB. В представлении ячейки текстовой таблицы есть TextFiled и ImageView, поэтому мой код выглядит так:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSString *iden = [ tableColumn identifier ];
if ([iden isEqualToString:@"MainCell"]) {
NSTableCellView *cell = [ tableView makeViewWithIdentifier:@"MainCell11" owner:self ];
[cell.textField setStringValue:@"123"];
[cell.imageView setImage:[[NSImage alloc] initByReferencingFile:@"/Users/Pon/Pictures/17880.jpg"]];
return cell;
}
return nil;
}
Я обнаружил, что textfield и imageView имеют выход по умолчанию, поэтому я могу использовать cell.textFiled, чтобы посетить этот объект textField и изменить его значение. Вот мой вопрос: если я добавлю дополнительный TextField к этому представлению ячейки изображения и текстовой таблицы, в одном столбце будет два TextField, так как я могу получить второй TextFiled, который я добавил, изменив значение TextFiled?
1 ответ
Как сказано на странице справки по классам NSTableCellView
Дополнительные свойства можно добавить, создав подкласс NSTableCellView и добавив необходимые свойства и подключив их программно или в Интерфейсном Разработчике.
Создайте свой подкласс NSTableCellView (скажем, "CustomTableCellView"), определите дополнительное свойство вывода текстового поля (представление изображения и первое текстовое поле определены в суперклассе). Установите класс прототипа вашей ячейки в Интерфейсном Разработчике и подключите дополнительный элемент управления текстового поля к вашему свойству.
В вашем классе NSTableViewDelegate:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSString *iden = [ tableColumn identifier ];
if ([iden isEqualToString:@"MainCell"]) {
CustomTableCellView *cell = [ tableView makeViewWithIdentifier:@"MainCell11" owner:nil ]; // use custom cell view class
[cell.textField setStringValue:@"123"];
[cell.imageView setImage:[[NSImage alloc] initByReferencingFile:@"/Users/Pon/Pictures/17880.jpg"]];
[cell.addinitionalField setStringValue:@"321"]; // that is all
return cell;
}
return nil;
}