我正在尋找一個簡單的解決方案,通過按刪除鍵刪除NSTableView行。我在Google搜索時看到的所有答案都是這樣的:http://likethought.com/lockfocus/2008/04/a-slightly-improved-nstableview/。這對我來說似乎是一個工程解決方案,但我想知道這是否是最好的方法。有人知道更好的答案嗎?NSTableView +刪除鍵
回答
我已經實現了一些類似於LTKeyPressTableView
的東西。但是,我使用數組控制器,所以在我的子類中,我添加了IBOutlet NSArrayController * relatedArrayController
。由於我的子類專門處理添加Delete鍵的處理,因此我無需在委託中處理刪除請求,而是直接在子類中處理它。當我檢測到按鍵的刪除鍵時,我只是打電話給[relatedArrayController delete:nil];
。
IRTableView.h:
#import <Cocoa/Cocoa.h>
@interface IRTableView : NSTableView {
IBOutlet NSArrayController * relatedArrayController;
}
@end
和IRTableView.m:
#import "IRTableView.h"
@implementation IRTableView
- (void)keyDown:(NSEvent *)event
{
// Based on LTKeyPressTableView.
//https://github.com/jacobx/thoughtkit/blob/master/LTKeyPressTableView
id delegate = [self delegate];
// (removed unused LTKeyPressTableView code)
unichar key = [[event charactersIgnoringModifiers] characterAtIndex:0];
if(key == NSDeleteCharacter)
{
if([self selectedRow] == -1)
{
NSBeep();
}
BOOL isEditing = ([[self.window firstResponder] isKindOfClass:[NSText class]] &&
[[[self.window firstResponder] delegate] isKindOfClass:[IRTableView class]]);
if (!isEditing)
{
[relatedArrayController remove:nil];
return;
}
}
// still here?
[super keyDown:event];
}
@end
最終的結果是相當IB友好對我來說,和使用非常簡單的解決方案在Cocoa綁定+核心數據應用。
我通常會在應用程序的菜單欄中創建一個新的菜單項。喜歡的東西:
File -> Delete ${Name of Item}
然後你可以在Interface Builder鏈接NSMenuItem
指向上或者您的應用程序代理或其他一些地方控制器定義的IBAction爲方法。此方法的實施應從您的模型中刪除該項目,並刷新NSTableView
。
做出一項NSMenuItem
出操作的優點是:
- ,您可以給項目在Interface Builder鍵盤快捷鍵。 (像刪除鍵一樣)
- 不熟悉應用程序,害怕按下刪除鍵或因任何原因無法訪問鍵盤的用戶仍可以使用此功能。
在10.10之後,NSViewController是應答鏈中的一部分。所以最簡單的方法是在你的子類NSViewController中實現keyDown。
沒有必要在NSViewController
中繼承並捕獲keyDown
。
菜單Edit
中的Delete
菜單項連接到第一響應者的選擇器delete:
。如果沒有Delete
菜單項,請創建一個並將其連接到First Responder(紅色立方體)的delete:
。
- 分配等價鍵
Delete
菜單項(⌫或⌘⌫) 在視圖控制器實現
IBAction
方法夫特:
@IBAction func delete(_ sender: AnyObject)
Objective- C:
-(IBAction)delete:(id)sender
並放入刪除表格視圖行的邏輯。
- 1. 拖出NSTableView刪除
- 2. NSTableView通過清除文本刪除行
- 3. NSTableView - 如何刪除空格鍵事件偵聽器?
- 4. NStableView選中的行顏色(刪除選定的NSTableView邊框)
- 5. 如何從NSTableView中刪除所有NSTableColumns?
- 6. 如何刪除NSTableView中的一行(Swift)
- 7. 從NSTableView中刪除列及其標題
- 8. 從NSTableView中刪除排序指示器
- 9. NSTableView&CoreData:點擊行時刪除對象
- 10. 如何刪除NSTableView中的空行?
- 11. NSTableView問題刪除最後一行
- 12. 刪除主鍵也刪除外鍵
- 13. 刪除鍵
- 14. 刪除外鍵
- 15. 刪除外鍵
- 16. Redis刪除鍵
- 17. 刪除外鍵
- 18. 刪除鍵與單鍵
- 19. 用刪除鍵刪除JavaFX錶行
- 20. silverlight用刪除鍵刪除行
- 21. 刪除功能試圖刪除外鍵
- 22. NSTableView的 - 通過鍵入
- 23. 帶NSTableView的箭頭鍵
- 24. 刪除線由鍵
- 25. ios刪除鍵盤
- 26. SQL刪除外鍵
- 27. 刪除從一個選擇框使用「刪除」鍵鍵盤
- 28. 如何使刪除鍵 - 刪除定製的Android鍵盤
- 29. 如何刪除鍵盤上的dataGridView行刪除鍵按? c#
- 30. 通過刪除鍵刪除刪除的項目按
嗨,克雷格。你的回答不是我真正期望的,但聽起來很不錯! = D非常感謝。 – Leandro 2011-01-13 12:18:09
哈哈是的,起初它似乎是一個非常間接的方法,但它工作得非常好,並照顧了很多頭痛。 – 2011-01-13 12:24:45