2013-03-08 75 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