2017-02-27 54 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) 
    } 
} 

此示例阻止中顯示的最後一行上下文菜單,而是一個更通用的解決方案可以通過添加一個委託與返回的方法來實現每個單元格的菜單。

相關問題