首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除NSTableCellView

删除NSTableCellView
EN

Stack Overflow用户
提问于 2013-03-25 21:11:24
回答 3查看 607关注 0票数 0

如何从我的NSTableCellView中删除NSTableCellView(或它的一个子类)?

当我清空保存信息的数组时,将DB排队以获取新信息,然后重新加载表数据,它只会用与新数组列表中类似的索引值更新单元格。

例如。

我首先在数组中有8个对象,它们显示得很好。当我更新我的数组而现在只有3个时,表中的前三个单元格将被更新,而最后5个单元格仍然是旧的。旧的不是可选的,只有可见的。我怀疑我错过了一些重画/重划..。

我在TableView上试过TableView,但还没有运气。

我正在使用ARC、Xcode 4.6.1和OSX10.8.3

示例代码

代码语言:javascript
复制
- (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;
}
EN

回答 3

Stack Overflow用户

发布于 2013-03-25 22:36:12

您必须将NSTableView告诉reloadData (听起来您正在这么做)。当您这样做时,数据源的工作就是知道现在只有3行,并在numberOfRowsInTableView:中给出这个答案(听起来您没有这样做)。你没有显示任何代码(为什么不?)当然,所有这些都是完全猜测的。

票数 1
EN

Stack Overflow用户

发布于 2013-03-26 12:52:01

使用

代码语言:javascript
复制
[tableView removeRowsAtIndexSet:indexSet withAnimation:YES];
票数 0
EN

Stack Overflow用户

发布于 2014-04-26 12:04:06

您可以使用以下示例(清除/刷新/重绘) cellView:

  1. 创建与原单元格相同的新单元格。
  2. 重新绘制它与原来的框架相同。
  3. 把原来的东西放进去。

在本例中,"mainTable“是表的NSTableView*。

代码语言:javascript
复制
- (NSView *)tableView:(NSTableView *)aTableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

    NSString* identifier = [tableColumn identifier];
    NSTableCellView* cellView = [[NSTableCellView new] initWithFrame:[[mainTable makeViewWithIdentifier:identifier owner:self] frame]];

    [cellView drawRect:[[mainTable makeViewWithIdentifier:identifier owner:self] frame]];
    cellView = [mainTable makeViewWithIdentifier:identifier owner:self];

    // do something with your cellView here ...

    return cellView;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15624848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档