NSTableView に行を動的に追加しています。[table reloadData] を発行すると、スクロール ビューが移動するのがわかります。手で移動すると、テーブルに新しい値が表示されます。しかし、どうすれば自動的にスクロールできますか?
12023 次
4 に答える
44
NSInteger numberOfRows = [tableView numberOfRows];
if (numberOfRows > 0)
[tableView scrollRowToVisible:numberOfRows - 1];
テーブルの最後に行を追加していると仮定します。
(データ ソースの代わりにテーブル ビューに行数を要求する理由は、この数が、テーブル ビューが認識しており、スクロールできる行数であることが保証されているためです。)
于 2009-11-25T20:40:10.080 に答える
19
次のようなものを使用します。
[table scrollRowToVisible:indexOfNewRow];
于 2009-11-25T20:34:50.760 に答える
1
以下に示すように、didAddRowView を使用して適切に機能するように解決しました。明らかに、新しいレコードを追加する場合、テーブルビューは新しい行ビューを作成する必要があります。
- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
// it sends notification from all tableviews.
// I am only interested in the dictionary...
if (tableView == dictTableView){
if ( row == [dictTableView numberOfRows]-1){
[dictTableView scrollRowToVisible:row];
}
}
}
しかし、私の IBAction では、add ステートメントをコントローラーに実行した後に 2 行追加しました。
- (IBAction)addNewDictItem:(id)sender {
NSInteger row=[[theDictArrayController arrangedObjects]count];
[theDictArrayController add:sender];
[dictTableView noteNumberOfRowsChanged];
[dictTableView scrollRowToVisible:row-1];
}
于 2016-06-12T13:45:27.543 に答える