如何从我的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/

10-12 14:49