我有NSTableView
一列。此列在Interface Builder中已选中“可编辑”,但双击表视图中的单元格不会执行任何操作。我已经确认(在-tableView:viewForTableColumn:row:
中通过检查[tableColumn isEditable]
)表列已设置可编辑标志。如果isEditable == YES
?
有人建议我包含我的数据源和委托代码。 dataArray
是存储NSManagedObject
子类对象的属性。 listPopupButton
选择要在NSTableView
中查看哪个实体,该实体可以显示不同的实体,所有实体都只有一个名称属性(由返回这些数组的nameOnlyItems
方法指示)
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [[self dataArray] count];
}
- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
NSTableCellView *cellView;
NSNumber *index = [NSNumber numberWithInteger:[[self listPopupButton] indexOfSelectedItem]];
if ([[self nameOnlyItems] containsObject:index]) {
CVCAbstractEntity *entity = [[self dataArray] objectAtIndex:row];
NSString *name = [entity name];
cellView = [tableView makeViewWithIdentifier:@"nameOnly" owner:self];
[[cellView textField] setStringValue:name];
} else if ([index integerValue] == CVCListPopUpIndexPublishers) {
CVCPublisher *publisher = [[self dataArray] objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
NSString *content;
content = [[publisher valueForKeyPath:identifier] description];
if ([identifier containsString:@"year"] && [content isEqualToString:@"0"]) {
content = @"";
}
cellView = [tableView makeViewWithIdentifier:identifier owner:self];
[[cellView textField] setStringValue:content ? content : @""];
} else if ([index integerValue] == CVCListPopUpIndexSeries) {
CVCSeries *series = [[self dataArray] objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
NSString *content;
content = [[series valueForKeyPath:identifier] description];
if ([identifier containsString:@"year"] && [content isEqualToString:@"0"]) {
content = @"";
}
cellView = [tableView makeViewWithIdentifier:identifier owner:self];
[[cellView textField] setStringValue:content ? content : @""];
}
return cellView;
}
- (void)tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray *)oldDescriptors {
NSMutableArray *mutableDataArray = [[self dataArray] mutableCopy];
[mutableDataArray sortUsingDescriptors:[tableView sortDescriptors]];
[self setDataArray:mutableDataArray];
[[self nameOnlyTableView] reloadData];
}
答案 0 :(得分:2)
事实证明,表格列不仅需要是可编辑的,而且单元格视图中的文本字段也是如此。选择此文本字段并从“行为”菜单中选择“可编辑”可解决问题。