我需要我的應用程序來打開一個窗口,當用戶雙擊NSTableView
中的一行時。我有點難以找到關於如何實現這一目標的信息或例子。任何人都可以指引我走向正確的方向嗎?雙擊Cocoa中的NSTableView行?
62
A
回答
117
看看NSTableView上的-setDoubleAction:
方法;您可以將其設置爲一種方法,該方法將與通常的目標操作系統一樣被調用,但只需雙擊即可。
在該操作方法中,-clickedRow
將很有用。
55
將更多基本信息添加到@JimPuls答案,以便其他新手可以使用Cocoa。
- 需要在接口中聲明NSTableView的IBOutlet。我認爲在表格的代表中最好這樣做。
- 表中的IBOutlet需要通過Interface Builder進行連接。按Ctrl-Drag &從聲明出口到表視圖的類中放入IB。釋放鼠標時,彈出窗口應顯示步驟#1中聲明的插座名稱。選擇那個。
- 在@implementation部分的-awakeFromNib方法中,在步驟#1中聲明的IBOutlet上調用-setTarget:和-setDoubleAction:並在步驟#2中連接。
這是我的表格視圖委託的摘錄。我也將我的代理設置爲數據源,因此您將看到與它關聯的NSTableViewDelegate和NSTabeViewDataSource接口。
//接口摘錄。
@interface MyTableViewDelegate : NSObject <NSTableViewDelegate, NSTableViewDataSource>
{
// This iVar needs to be connected to the table view via the IB.
IBOutlet NSTableView *tableOutlet;
}
@property (assign) IBOutlet NSTableView *tableOutlet;
- (void)doubleClick:(id)nid;
@end
//執行摘錄。
@implementation MyTableViewDelegate
@synthesize tableOutlet = _tableOutlet;
- (void)awakeFromNib {
[_tableOutlet setTarget:self];
[_tableOutlet setDoubleAction:@selector(doubleClick:)];
}
- (void)doubleClick:(id)object {
// This gets called after following steps 1-3.
NSInteger rowNumber = [_tableOutlet clickedRow];
// Do something...
}
希望這會有所幫助。
0
你可以做同樣的事情的綁定,首先在.m文件.h文件中
-(IBAction)openWindow:(id)sender
聲明一個mentod實現相同
-(IBAction)openWindow:(id)sender
{
//do something here;
}
到那種筆尖在您表視圖存在,選擇表視圖並獲得屬性檢查器的倒數第二個選項卡,打開雙cicl參數披露三角形檢查綁定以檢查fox選擇文件的所有者,模型鍵值應該是「self」,選擇器名稱將是「openWindow: 「,與」雙擊目標「說明相同re, 這將工作
10
由於PR辛格說,你可以使用可可綁定,你也可以傳遞selectedObjects。
在IB選擇表視圖,然後在綁定檢查器中設置這兩個綁定起來如下:
>Double Click Target bind to = Application delegate object (or file owner) model key path = self selector name = myMethod: >Double Click Argument bind to = array controller controller key = selectedObjects selector name = myMethod:
凡myMethod的作爲
- (void)myMethod:(NSArray*)selectedObjects
{
NSLog(@"%@", selectedObjects);
}
實現這也是這裏記錄: https://developer.apple.com/library/mac/qa/qa1472/_index.html
6
如果有人尋找一個迅速的2.0版本: 這是對我有用。看起來比Objective C代碼更容易。
@IBOutlet weak var searchResultTable: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
searchResultTable.doubleAction = "doubleClickOnResultRow"
}
func doubleClickOnResultRow()
{
print("doubleClickOnResultRow \(searchResultTable.clickedRow)")
}
6
您可以連接Interface Builder中的雙擊操作。按住Control鍵點按您的表格視圖(確保您獲取表格視圖,而不是滾動視圖或剪輯視圖或表格列)以獲取其連接面板。在「已發送操作」部分找到「doubleAction」項。將它連接到您選擇的IBAction。
相關問題
- 1. NSTableView雙擊/重命名
- 2. 檢測NSTableview標題上的雙擊
- 3. 在Cocoa OSX中捕捉雙擊
- 4. Cocoa osx NSTableview更改行高亮顏色
- 5. Cocoa中的靜態NSTableView單元格
- 6. Cocoa/Obj-c:如何改變NSTableView中Tab鍵的行爲?
- 7. 雙擊gridview中的整行
- 8. 雙擊DataGridView行?
- 9. 處理雙擊鼠標事件並返回按下NSTableView
- 10. 在Cocoa中檢測NSTableView的丟失焦點
- 11. 攔截單擊或雙擊鼠標 - 僅執行雙擊代碼雙擊
- 12. NSTableView中的NSButtonCell:點擊處理
- 13. 從可變數組中更新NSTableView如何在Cocoa中工作?
- 14. 如何單擊NSTableView中的NSTextFieldCell進行編輯?
- 15. 在.NET/C中的TreeView雙擊行爲#
- 16. 雙擊Sencha測試中的一行
- 17. NSTableView行的索引
- 18. 砸NSTableView的行爲
- 19. NStableView選中的行顏色(刪除選定的NSTableView邊框)
- 20. 雙擊/雙擊Angular2&ionic
- 21. 雙[] - >雙擊[,]
- 22. 雙擊執行.jar文件
- 23. 鼠標雙擊DataGrid行
- 24. 雙擊一個jqgrid行
- 25. 在NSTableView中着色行
- 26. 我的NStableview上沒有檢測到鼠標事件+ cocoa
- 27. 運行單擊並雙擊錨標記
- 28. 如何在Android中執行雙擊
- 29. 在Linux中雙擊運行OpenGL程序
- 30. NSTableView在NSTextField中顯示選中的行
有沒有辦法通過IB連接? – 2010-09-20 17:30:09
還記得用setTarget設置表視圖的目標:傻,但可以忽略 – nduplessis 2011-07-02 20:06:04
如果你實現-setDoubleAction:作爲委託方法,或者你應該創建一個IBOutlet iVar到表,並且調用-setDoubleAction:on伊娃? – 2011-12-04 21:13:22