nstablecellview不保留其nstextfield的值
-
21-12-2019 - |
题
以下是委托的ViewFortableMolumn方法。我根据列表视图中的选择在数据源中动态创建表列。
NSDictionary* rowData = [[self tableData] objectAtIndex:row];
NSString* identifier = [tableColumn identifier];
NSTableCellView* result = [tableView makeViewWithIdentifier:@"myCellView" owner:self];
if (result == nil) {
result = [[NSTableCellView alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
_textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
[result setTextField:_textField];
[[result textField] setStringValue:[rowData objectForKey:identifier]];
}
else {
[[result textField] setStringValue:[rowData objectForKey:identifier]];
}
NSLog(@"result text field: %@", [[result textField] stringValue]);
return result;
.
现在在
中-(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
NSLog(@"did add: %ld", row);
NSTableCellView* aView = [rowView viewAtColumn:0];
NSLog(@"%@", [[aView textField]stringValue]);
NSLog(@"%@",[[[rowView viewAtColumn:0 ] textField] stringValue]);
}
.
textfield是一个僵尸。是什么赋予了?谢谢你的帮助。
解决方案
必须为窗口控制器中的NSTableCellView获取参考(iboutlet)。这就是关于它的,没有别的。现在我可以通过nstableview委托的标识符访问它;即使在删除所有列并将新列添加到TableView后,也会保留该引用。
现在在从300-3000行的表格中处理非常复仇的表观性能!那是另一天。
其他提示
我可以想到的是,当你做的时候:
_textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
.
您正在释放以前在_textField
中的任何内容。
不隶属于 StackOverflow