如何从我的NSTableView中删除NSTableCellView(或其子类)?
当我清空保存信息的数组时,将新信息排入DB队列,然后重新加载表数据,它仅使用类似于在新数组列表中找到的索引值来更新单元格。
例如
我首先在数组中有8个对象,它们显示良好。当我更新阵列时,现在只有3个单元格时,表中的前三个单元格将被更新,而最后五个单元格仍旧。旧的是不可选的,只有可见的。而且我怀疑我想念一些重绘/取消分配..
我在TableView上尝试了setNeedsDisplay,但是还没有运气。
我正在使用ARC,Xcode 4.6.1和OS X 10.8.3
样例代码
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [_array count];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
[_tableView setNeedsDisplay];
NSDictionary *d = [_array objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"MainCell"]) {
CustomCellView *cellView = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
[cellView.textField setStringValue:d[@"from"]];
[cellView.subject setStringValue:d[@"subject"]];
[cellView.text setStringValue:d[@"text"]];
[cellView.date setStringValue:d[@"date"]];
return cellView;
}
return nil;
}
最佳答案
您必须将NSTableView告知reloadData
(听起来您正在这样做)。这样做时,数据源的工作就是知道现在只有3行,并在numberOfRowsInTableView:
中给出答案(听起来好像您没有这样做)。您不显示任何代码(为什么不显示?),所以所有这些当然都是猜测。
关于objective-c - 删除NSTableCellView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15624848/