我试图模仿MacOS联系人应用程序在我自己的应用程序中与GroupRows做什么,但无法找出或找到如何摆脱组行上方和下方的行。我尝试添加自己的自定义NSTableRowView,可以毫无问题地更改背景颜色,但不知道如何摆脱这些边界。
答案 0 :(得分:1)
此外,如果您正确设置了isGroupRow
,我们可以省略自定义变量isGroupRowStyle
,而使用内置[self tableView:tableView isGroupRow:row]
。
下面的Swift代码段创建了一个浮动的分组样式表视图行-看起来很像Finder。其中isGroupRowStyle
区分普通行和组行;当群组行未锚定在表格视图顶部时,isFloating
为true;覆盖drawBackground(in:)
会删除包裹在组行周围的分隔符。
class TableRowView: NSTableRowView {
override func draw(_ dirtyRect: NSRect) {
guard isGroupRowStyle && isFloating else {
return super.draw(dirtyRect)
}
NSColor.gridColor.setFill()
dirtyRect.fill()
}
override func drawBackground(in dirtyRect: NSRect) {
// do not draw
}
}
答案 1 :(得分:0)
子类NSTableRowView。然后在子类中添加一个属性,如下所示:
@interface CustomTableRowView : NSTableRowView
@property (nonatomic, assign) BOOL isGroupRow;
@end
覆盖子类中的drawRect:
- (void)drawRect:(NSRect)dirtyRect {
if (!self.isGroupRow)
[super drawRect:dirtyRect];
}
然后在tableView:rowViewForRow中,设置isGroupRow:
tableRow.isGroupRow = [self tableView:tableView isGroupRow:row];
这将删除组行的顶部和底部分隔符。对不起,我不知道Swift,但你很可能很容易翻译它。希望它有所帮助!