gpt4 book ai didi

objective-c - 什么会阻止可编辑的 NSTableColumn 双击时可编辑?

转载 作者:行者123 更新时间:2023-12-03 17:39:59 24 4
gpt4 key购买 nike

我有一个带有单列的NSTableView。该列在 Interface Builder 中选中了“可编辑”,但双击 TableView 中的单元格不会执行任何操作。我已经确认(在 -tableView:viewForTableColumn:row: 中,通过检查 [tableColumn isEditable])表格列设置了可编辑标志。如果 isEditable == YES,什么会阻止列被编辑?

有人建议我包含我的数据源和委托(delegate)代码。 dataArray 是存储 NSManagedObject 子类对象的属性。 listPopupButton 选择要在 NSTableView 中查看的实体,该 NSTableView 可以显示不同的实体,所有这些实体都只有一个 name 属性(如 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];
}

最佳答案

事实证明,不仅表格列需要可编辑,单元格 View 中的文本字段也需要可编辑。选择此文本字段并从“行为”菜单中选择“可编辑”解决了问题。

关于objective-c - 什么会阻止可编辑的 NSTableColumn 双击时可编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com