2013-03-08 72 views
7

OK,這是我的情況:滾動NSTableView的選擇到

  • 我必須綁定到一個NSTableViewNSMutableArray,通過NSArrayController
  • 我操縱表視圖的選擇(通過鍵盤觸發),使用NSArrayControllerselectNext:selectPrevious:

的事情是:選擇確實變化,但表視圖不會滾動當前的選擇,以便其內容可見。

我該怎麼辦?有任何想法嗎?

回答

16

有一個在NSTableView

- (void)scrollRowToVisible:(NSInteger)row; 

的方法這將滾動到指定的row

+1

感謝您的建議。我已經嘗試過它,它的工作原理。但是,仍然存在一些細微的問題:a)儘管我正在執行'[myTableView scrollRowToVisible:[myTableView selectedRow]]'(緊跟在'selectNext:'和'selectPrevious:'之後,它不會滾動到* current * (分別)之前或之後; b)即使在[[myTableViewrollRowToVisible:[myTableView selectedRow] +1]'(在'selectNext:'之後)後,它*顯示出來,但是滾動是*不光滑。 (**提示**:表格視圖*不*焦點)。任何想法? – 2013-03-08 11:58:36

+1

對不起,遲了回覆,實際上我創建了一個項目來檢查,並且它對我有效,因爲我使用了' - (IBAction)按鈕:(id)sender {self.array addObject:@「Anoop」]; [self.myTable reloadData]; [self.myTable scrollRowToVisible:self.array.count-1]; }' – 2013-03-08 12:20:02

+1

與@ Dr.Kameleon有同樣的問題。我想這是因爲當你調用'selectPrevious'時,視圖的屬性不會立即改變。將'scrollRowToVisible'分配給「稍後」也會有所幫助。這並不漂亮,但它比+/- 1減少了競爭條件:DispatchQueue.main.async {tableView.scrollRowToVisible(tableView.selectedRow)}' – ctietze 2017-01-05 09:17:55