使用 objective-c 中的按钮清除 table

Clear table using a button in objective-c

我正在尝试使用按钮清除 table 中的所有内容。基本上重置了table。我使用以下方法一次删除一个切片,但如何从 table 中清除所有切片?提前致谢!

- (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];

如果你的 NSTableViewDataSource numberOfRowsInTableView returns 0,table 将变为空。

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

[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];