2017-02-27 22 views
0

有没有什么方法可以阻止上下文菜单(和单元视图中关联的选择“ring”)在上右键单击时显示基于视图的NSTableView防止在视图中的特定单元格上显示上下文菜单NSTableView

我不是在禁止所有单元格上的右键单击操作,而只是针对特定单元格。

我明显地尝试过所有的处理选择改变的委托方法,但没有任何作用,因为selectedRow属性没有改变,只有clickedRow。 所以基本上我寻找的东西相当于

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool 

但对于点击排不选择行。

注意:问题是MACOS,而不是iOS上UITableViewNSTableView

回答

0

我已经资助一种做我想做的事的方式,虽然看起来有点像参与应该更简单的事情。所以我欢迎任何更简单的解决方案。

它可以通过继承NSTableView的完成:

class MyTableView : NSTableView { 

    override func menu(for event: NSEvent) -> NSMenu? { 
     let clickedPoint = self.convert(event.locationInWindow, from: nil) 
     let row = self.row(at: clickedPoint) 

     // no contextual menu for the last row 
     return row == self.numberOfRows - 1 ? nil : super.menu(for: event) 
    } 
} 

此示例阻止中显示的最后一行上下文菜单,而是一个更通用的解决方案可以通过添加一个委托与返回的方法来实现每个单元格的菜单。

相关问题