所以我有一个完美的NSTableView for Mac App。我在其上添加了一个新专栏,我试图将其设置为Combo,但我遇到了很多问题。 首先,如果我将NSComboBoxCell拖放到Storyboard上,它将丢失所有其他列(奇怪的是#1)。所以我决定覆盖我的NSTextFieldCell,这看起来就像是要走的路。但是现在我的组合框上的物品没有显示出来。
- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTableCellView *cell = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
if ([tableColumn.identifier isEqualToString:@"typeCell"]) {
NSComboBoxCell *combo =(NSComboBoxCell*) [cell.textField viewWithTag:10];
[combo addItemsWithObjectValues:@[@"Test"]];
}
对我做错了什么的任何想法? 该列也已可编辑。
答案 0 :(得分:0)
您混淆NSTableCellView
(NSView
的子类,用于基于视图的表视图中的单元格)和NSTextFieldCell
(NSCell
的子类,用于基于单元格的表视图中的单元格。
解决奇怪的事情1:将NSComboBox
(不Cell
)拖到表格视图中。
viewForTableColumn
应该返回NSView
的(子类),而不是NSCell
的(子类)。
[cell.textField viewWithTag:10]
会返回NSTextField
的子视图。您不应该将子视图放在NSTextField
中,我认为您没有。
我的组合框上的项目没有显示
combo
是nil
。