NSTableView с выпадающим меню и изображения внутри меню
Да, возможно ли иметь:
- Таблица с двумя столбцами (должно быть легко)
- У одной ячейки должно быть изображение, и его можно выбрать из выпадающего меню
Посмотрев, что я узнал, он должен иметь тип NSPopupButtonCell, но я хочу, чтобы внутри было только изображение, без текста,
Как я могу это сделать? - Другой столбец будет редактируемым, пользователь должен иметь возможность ввести его.
было бы здорово, если бы я мог получить любой ссылочный код для реализации того же самого.
1 ответ
Решение
Я сделал это следующим образом,
В столбце 1 выберите DataCell и присвойте ему тип NSPopupButtonCell, по умолчанию он не придет, вам нужно выбрать его явно.
В Кодекс добавьте следующие строки Кодекса...
NSTableColumn *option = [pTableColumns objectAtIndex:[pTableView columnWithIdentifier:OPTION_COLUMN_NAME]];
NSTableColumn *shortCutItem = [pTableColumns objectAtIndex:[pTableView columnWithIdentifier:SHORTCUT_COLUMN_NAME]];
// we want first cell to have the Image & Menu
//Data type column drop down
NSPopUpButtonCell *dataTypeDropDownCell = [option dataCell];//[[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[dataTypeDropDownCell setBordered:NO];
[dataTypeDropDownCell setEditable:YES];
NSArray *dataTypeNames = [NSArray arrayWithObjects:@"NULLOrignal", @"String", @"Money", @"Date", @"Int", nil];
[dataTypeDropDownCell addItemsWithTitles:dataTypeNames];
Добавьте следующий код, чтобы установить правильный MenuItem
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{
if([[aTableColumn identifier] isEqualToString:OPTION_COLUMN_NAME]){
NSPopUpButtonCell *dataTypeDropDownCell = [aTableColumn dataCell];
[dataTypeDropDownCell selectItem:[ dataTypeDropDownCell itemAtIndex:3]];
}
}
Теперь только в ожидании этого, чтобы добавить изображение внутри MenuItem, который не имеет большого значения,
Еще раз спасибо за Глядя на это, дайте мне знать, если есть какой-либо другой подход, чтобы сделать это....