是否可以讓我的NSTableView接受一個deleteevnt(退格或甚至cmd +退格)?我有一個NSMenu,其中我的刪除菜單項連接到筆尖中的第一個響應對象。NSTableView和退格事件(刪除行) - fieldeditor/firstresponder?
任何指針?
是否可以讓我的NSTableView接受一個deleteevnt(退格或甚至cmd +退格)?我有一個NSMenu,其中我的刪除菜單項連接到筆尖中的第一個響應對象。NSTableView和退格事件(刪除行) - fieldeditor/firstresponder?
任何指針?
刪除記錄您可以創建NSTableView的子類,覆蓋keyDown
像這樣:
- (void)keyDown:(NSEvent *)theEvent
{
unichar key = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
if(key == NSDeleteCharacter)
{
[self deleteItem];
return;
}
[super keyDown:theEvent];
}
然後確保你想要的任何NSTableView的有刪除功能在Interface Builder中使用您的子類,而不是常規的NSTableView。
您可以實現例如- (void)deleteItem
方法是這樣的:
- (void)deleteItem
{
if ([self numberOfSelectedRows] == 0) return;
NSUInteger index = [self selectedRow];
[documentController deleteItemWithIndex:index];
}
一種方法是很容易實現:
當你建立你的項目,因爲喲ü實現deleteRecord方法,退格按鍵會從你的tableview
是的,我已經想通了,但是當我一次超過1個表格視圖時,會給我帶來麻煩:) – 2011-02-13 18:40:15
實現該功能的正確方法是使用鍵綁定:
取決於哪一種你寫的應用程序,有驗證委託方法。通過這種方法,您可以設置菜單項啓用狀態。對於基於文檔的應用程序,此驗證通過- (BOOL)validateUserInterfaceItem:(id)anItem
發生。
這是使用NSViewController
和First Responder
一個現代化的解決方案。
菜單Edit
中的Delete
菜單項連接到第一響應者的選擇器delete:
。如果沒有Delete
菜單項,請創建一個並將其連接到First Responder(紅色立方體)的delete:
。
Delete
菜單項(⌫或⌘⌫)在視圖控制器實現IBAction
方法
夫特:@IBAction func delete(_ sender: AnyObject)
Objective- C:-(IBAction)delete:(id)sender
並放入刪除表格視圖行的邏輯。
無子類需要。
如果您有多個視圖需要分別跟蹤同一個documentController,則可以使用標籤,即在Interface Builder中輸入視圖的標籤,然後檢查`keyDown:`方法中self.tag值的值。 – Frost 2012-03-02 16:48:01
對不起,但這個答案不應被標記爲正確的。這個解決方案絕對不是最佳實踐。 – Jacque 2013-03-22 10:43:05