NSTableViewRowAction-单击后向后滑动

时间:2019-02-03 13:03:19

标签: cocoa swift4 nstableview xcode10 macos-mojave

我使用tableView(_:rowActionsForRow:edge:) -> [NSTableViewRowAction]在表格视图中添加了幻灯片功能,但是我发现当单击前导按钮时,它可以正常工作,但不会向后滑动。

这是我的行操作的代码:

extension ViewController: NSTableViewDelegate {
    func tableView(_ tableView: NSTableView, rowActionsForRow row: Int, edge: NSTableView.RowActionEdge) -> [NSTableViewRowAction] {
        // some other codes
        switch edge {
        case .trailing:
            // some other codes
        case .leading:
            let revealInFinderAction = NSTableViewRowAction(style: .regular, title: "Reveal in Finder") { (action, row) in
                self.revealInFinder(row: row)
            }
            revealInFinderAction.backgroundColor = .systemOrange
            return [revealInFinderAction]
        }
    }
}

例如,我的一个按钮执行了“在Finder中显示”作业(revealInFinderAction),单击该按钮后,它在Finder中显示了文件,但没有t向后滑动。

我发现,在滑动其中一个单元格后,单击“标记为已读/未读”按钮后,Apple的Mail应用程序可以很好地处理此问题,它完成了工作并自动向后滑动。我只想找到一种使同一件事发生的方法。

我已经完成了有关如何实现此目标的研究,但是我找不到解决方案,请问有人可以帮助我吗?我在macOS 10.14上使用带有Swift 4的Xcode 10。

1 个答案:

答案 0 :(得分:2)

尝试像这样设置tableView.rowActionsVisible = false

case .leading:
        let revealInFinderAction = NSTableViewRowAction(style: .regular, title: "Reveal in Finder") { (action, row) in
            self.revealInFinder(row: row)
            tableView.rowActionsVisible = false
        }
        revealInFinderAction.backgroundColor = .systemOrange
        return [revealInFinderAction]