我正在尝试使用以下方式向我的NSTableView动态添加行
NSTableView :: insertRowsAtIndexes:withAnimation

为此,我更新了保存数据源的NSArray的内容,然后

[myTableView beginUpdates];
NSRange theRange = NSMakeRange(0, [self.myTableContents count]-1);
NSIndexSet* theIndexSet = [NSIndexSet indexSetWithIndexesInRange:theRange];
[myTableView insertRowsAtIndexes:theIndexSet withAnimation:NSTableViewAnimationEffectFade];
[myTableView endUpdates];


我的问题是在重新绘制表格并计算每一行的高度时出现边界错误。我认为,该问题在文档中提到:“表视图中的numberOfRows通过索引数自动增加。”

如果myTableContents中有10个项目,并且我为所有这10个项目都调用insertRowsAtIndexes,则将对行0-19调用heightOfRow(myTableContents中的10行,再加上因调用insertRowsAtIndexes而添加的10行)。

那么,其他表如何处理呢?

最佳答案

theRange应该仅由要插入的新行的范围组成。即对于insertRowsAtIndexes:,您应该传递并非要插入所有行的新行的索引。

您的数据源也应该在那时更新,而numberOfRows应该反映出来。

关于cocoa - 使用NSTableView insertRowsAtIndexes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21892829/

10-09 16:29