特定の行が中央に配置されるように、プログラムでNSTableViewをスクロールしたいと思います。NSTableViewをスクロールして、特定の行が表示されるようにするのは簡単です。
[theTableView scrollRowToVisible:pos];
ただし、通常、問題の行は表示領域の下部にありますが、私はそれをほぼ中央に配置したいと思います。
もう1つの愚かなアプローチは、表示したい行を超えて数行スクロールすることです。たとえば、次のようになります。
// 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を使用して作成されました)。
ありがとう!