【问题标题】:Scroll NSTableView to selection滚动 NSTableView 到选择
【发布时间】:2013-03-08 11:28:26
【问题描述】:

好的,这就是我的情况:

  • 我有一个NSMutableArray 绑定到一个NSTableView,通过NSArrayController
  • 我正在使用NSArrayControllerselectNext:selectPrevious: 操作表格视图的选择(通过键盘触发)

问题是:选择确实改变了,但表格视图不会滚动到当前选择,因此它的内容是可见的。

我该怎么办?有什么想法吗?

【问题讨论】:

    标签: objective-c macos cocoa nstableview nsarraycontroller


    【解决方案1】:

    NSTableView中有一个方法

    - (void)scrollRowToVisible:(NSInteger)row;
    

    这将滚动到指定的row

    【讨论】:

    • 感谢您的建议。我已经尝试过了,它有效。但是,仍然存在一些微妙的问题:a) 虽然我在做 [myTableView scrollRowToVisible:[myTableView selectedRow]](紧跟在 selectNext:selectPrevious: 之后,它不会滚动到 current 行,而是滚动到在它之前或之后(分别)。b) 即使在 [myTableView scrollRowToVisible:[myTableView selectedRow]+1] 之后(selectNext: 之后),它确实显示,但滚动流畅。 (提示:表格视图没有在焦点上)。有什么想法吗?
    • 抱歉回复晚了,实际上我创建了一个项目来检查,它对我有用,因为我使用了- (IBAction)button:(id)sender { [self.array addObject:@"Anoop"]; [self.myTable reloadData]; [self.myTable scrollRowToVisible:self.array.count-1]; }
    • 与@Dr.Kameleon 有同样的问题。我猜是因为当你调用selectPrevious 时,视图的属性不会立即改变。为“稍后”发送scrollRowToVisible 也有帮助。这并不漂亮,但它比 +/-1 更能减轻竞争条件:DispatchQueue.main.async { tableView.scrollRowToVisible(tableView.selectedRow) }
    猜你喜欢
    • 1970-01-01
    • 2020-11-12
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多