2014-09-24 51 views
2

我有一个很大的NSTableView,只有几个物品被网格线/分隔物隔开。除了这些项目之外,还有一些网格线,对于空的物品,除了这个事实之外,所有的都很棒。如何为存在的项目显示网格线,但是对于不存在的项目只有简单的背景?如何隐藏空物品的NSTableView网格线/分隔物

注:UITableView中有一个方法来设置一个footerView - 这同样的方法是不可能的NSTableView的,否则也只是设置一个大空观为页脚的情况下...

+1

如果您使用基于'NSTableView'的视图(以及为什么不应该?),您可以继承'NSTableRowView'并在您的'-drawBackgroundInRect:'中自己绘制网格线。 – Elwisz 2014-09-25 19:58:29

回答

6

我想通out one way:

在界面构建器中,将tableview的'row height'设置为一个非常大的数字,即10000,并将其设置为'Fixed'。在代表实现tableView:heightOfRow:

例如,斯威夫特:

func tableView(tableView: NSTableView!, heightOfRow row: Int) -> CGFloat { 
     return 50 
} 

这意味着,没有内容的单元格都这么大了,你不能看到网格线,如上述方法似乎只被调用现有的细胞。

根据Elwisz的评论,另一种方法是实现NSTableRowView的drawBackgroundInRect:。

+0

这对我有用!打算添加O-C代码。 – 2015-06-19 09:49:34