0

所以我有一个完美的适用于 Mac 应用程序的 NSTableView。我在上面添加了一个新列,我正在尝试将其设置为 Combo,但我面临很多问题。首先,如果我将 NSComboBoxCell 拖放到情节提要上,它将丢失我所有的其他列(奇怪的事情 #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"]];

}

知道我做错了什么吗?该列也已经可编辑。

4

1 回答 1

0

您很困惑NSTableCellView( 的子类NSView,用于基于视图的表格视图中的单元格)和NSTextFieldCell( 的子类NSCell,用于基于单元格的表格视图中的单元格)。

奇怪的事情1的解决方案:将a NSComboBox(不带Cell)拖到表格视图中。

viewForTableColumn应该返回 (subclass of) NSView,而不是 (subclass of) NSCell

[cell.textField viewWithTag:10]返回 a 的子视图NSTextField。您不应该将子视图放在NSTextFields 中,我认为您没有这样做。

我的组合框上的项目没有出现

combonil

于 2017-04-10T21:38:47.427 回答