【问题标题】:Clear table using a button in objective-c使用objective-c中的按钮清除表格
【发布时间】:2022-02-06 18:21:58
【问题描述】:

我正在尝试使用按钮从表中清除所有内容。基本上重置表。我使用以下内容一次删除一个切片,但如何从表中清除所有切片?先感谢您!

- (IBAction)handleRemoveSliceTapped:(NSButton *)sender {
NSInteger selectedRow = [self.sliceTable selectedRow];
if (selectedRow < 0) {
    return;
}
if ([self.sliceTimes count] == 0)  {
    return;
}

NSIndexSet *removalSet = [NSIndexSet indexSetWithIndex:selectedRow];
[self.sliceTable removeRowsAtIndexes:removalSet withAnimation:NSTableViewAnimationSlideUp];
[self.sliceTimes removeObjectAtIndex:selectedRow];
[self.sliceTable reloadData];

标签: objective-c nstableview


【解决方案1】:

如果您的 NSTableViewDataSource numberOfRowsInTableView 返回 0,则该表将变为空。

因此,您只需清除视图模型,然后重新加载表:

[self.sliceTimes removeAllObjects];
[self.sliceTable reloadData];

这是没有动画的。如果您需要动画,请在 NSIndexSet 中包含所有行索引,并在 beginUpdates/endUpdates 之间进行更新(请参阅 https://developer.apple.com/documentation/appkit/nstableview/1527288-beginupdates?language=objc ):

NSIndexSet *removalSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, self.sliceTimes.count)];
[self.sliceTable beginUpdates];
[self.sliceTable removeRowsAtIndexes:removalSet withAnimation:NSTableViewAnimationSlideUp];
[self.sliceTimes removeAllObjects];
[self.sliceTable endUpdates];

【讨论】:

  • 搞定了!我错过了 [self.sliceTable reloadData] 的重置;谢谢
猜你喜欢
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2017-05-21
  • 2011-10-02
相关资源
最近更新 更多