Bog*_*rca 3 macos cocoa objective-c nstableview swift
在基于视图的特定单元格上右键单击时,是否有任何方法可以防止显示上下文菜单(以及单元格视图周围的相关选择“环”)NSTableView?
我不是在谈论禁用对所有单元格的右键单击操作,而只是在特定的单元格上禁用。
我显然已经尝试了所有处理选择更改的委托方法,但没有一个有效,因为selectedRow属性没有改变,只有改变clickedRow。所以基本上我正在寻找相当于
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool
Run Code Online (Sandbox Code Playgroud)
但对于单击的行而不是选定的行。
注:问题是关于NSTableView在Mac系统,而不是UITableViewiOS上。
我找到了一种方法来做我想做的事,虽然看起来有点涉及应该更简单的事情。所以我欢迎任何更简单的解决方案。
它可以通过继承 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)
}
}
Run Code Online (Sandbox Code Playgroud)
此示例阻止为最后一行显示上下文菜单,但可以通过添加具有返回每个单元格的菜单的方法的委托来实现更通用的解决方案。
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |