NSTableView声明了这个可选的委托方法:
- (CGFloat)tableView:(NSTableView *)tableView sizeToFitWidthOfColumn:(NSInteger)column;
实施它很简单,但当您的表格中填充数千个条目时,您就会开始看到性能问题,并且调用此方法会使应用响应
以下是文档中有关实现该方法的内容:
如果要控制列的宽度,请实现此方法 当用户双击调整大小分隔符时。默认情况下, NSTableView迭代表中的每一行,通过访问单元格 preparedCellAtRow:column:,并请求" cellSize"找到了 适当的最大宽度使用。
对于大行数,进行蒙特卡罗模拟而不是每行进行交互。为了获得性能和准确的结果,它是 建议在使用大表时实现此方法。
所以我开始爬网,搜索" Monte Carlo Simulations"。
我现在简要了解蒙特卡罗模拟的内容, 但我不明白它如何适用于这个特定的问题。
我的意思是,最大内容大小是完全随机。它不会遵循任何等式或规则,它完全基于将插入到单元格中的内容,那么蒙特卡罗方法如何应用于此,它将如何帮助我找到适当的内容大小?
答案 0 :(得分:0)
蒙特卡罗:不是测量色谱柱的每个细胞,而是仅测量一组随机细胞,并将发现的最大测量值视为色谱柱的最大宽度。 当然,这不会导致最大单元宽度。但大部分时间它可能都非常接近。并且考虑到该方法的目的,即在双击调整大小分隔符时调整列的大小,错误没什么大不了的。如果你想要精确的值,你不应该指望这种方法。
为什么要实现这样的方法btw?