我想以編程方式滾動NSTableView,使特定的行居中。它的簡單滾動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製作的。)
謝謝!
我有同樣的問題,我想知道爲什麼這不是在API中的選項! – trss 2012-08-23 19:22:34