我想以编程方式滚动 NSTableView 以使特定行居中。滚动 NSTableView 以使特定行可见很简单:
[theTableView scrollRowToVisible:pos];
但是,通常有问题的行位于可见区域的底部,而我希望它大致位于中心。
另一种愚蠢的方法是滚动几行超出我想要可见的行,例如:
// pos = index of desired row
// numRows = number of rows in the table
NSRect visibleRect = [resultsTableView visibleRect];
NSRange visibleRange = [resultsTableView rowsInRect:visibleRect];
NSUInteger offset = visibleRange.length/2;
NSUInteger i;
if (pos + offset >= numRows)
i = numRows - 1;
else if (pos < visibleRange.length)
i = pos;
else
i = pos + offset;
[resultsTableView scrollRowToVisible:i];
如果所有行的高度完全相同,则此方法有效,但我有兴趣制作具有不同高度的行。
有没有更好,也许更直接的方法来做到这一点?例如,我注意到 NSTableView 被包装在一个 NSScrollView 中......(该表是使用 Interface Builder 制作的。)
谢谢!