问题
I have a custom NSTableRowView
implementation to display my data cells. The table also contains group rows using a simple NSTextField
.
In my custom row view I need to change the drawing of the bottom separator slightly depending on if the next row below is a data cell (i.e. my custom row) or a group header.
In the case of a group header I don't have to draw the separator, otherwise I'll end up with a 2px separator like shown in the screenshot.
Is there a way to get a reference to the next (or previous) NSTableRowView
instance from [NSTableRowView drawBackgroundInRect:...]
?

回答1:
Am I correct that your table view delegate implements -tableView:rowViewForRow:
?
If so, let the table view delegate help:
- Add a property
drawsSeparator
to your custom row class. - In your row class, check the value of this property in
drawRect
and adjust your drawing accordingly. - Set
drawsSeparator
on your row inrowViewForRow
. You can invoke-tableView:isGroupRow:
withrow + 1
to determine whether the next row is a group (after checking to make sure you're not on the last row).
来源:https://stackoverflow.com/questions/9324732/draw-a-custom-nstablerowview-depending-on-if-next-row-is-group-row