Tôi cần ứng dụng của mình để mở cửa sổ khi người dùng nhấp đúp vào một hàng trong một NSTableView
. Tôi đang gặp một chút khó khăn trong việc tìm kiếm thông tin hoặc các ví dụ về cách thực hiện điều này. Ai đó có thể chỉ cho tôi phương hướng đúng không?Nhấp đúp chuột vào hàng NSTableView trong Cocoa?
Trả lời
Hãy xem phương thức -setDoubleAction:
trên NSTableView; bạn có thể đặt nó thành một phương thức sẽ được gọi giống như hệ thống hành động mục tiêu bình thường nhưng trên một cú đúp.
Trong phương thức hành động đó, -clickedRow
sẽ hữu ích.
Thêm thông tin cơ bản khác vào @JimPuls trả lời vì lợi ích của những người mới đến Cocoa.
- IBOutlet cho NSTableView cần được khai báo trong giao diện. Tôi cho rằng nó được ưu tiên làm như vậy trong ủy nhiệm của bảng.
- IBOutlet cho bảng cần được kết nối thông qua Trình tạo giao diện. Để thực hiện điều đó, hãy nhấn Ctrl-Drag & Thả vào IB từ lớp khai báo ổ cắm đó sang chế độ xem bảng. Khi bạn nhả chuột, cửa sổ bật lên sẽ xuất hiện với tên của cửa hàng bạn đã khai báo ở bướC# 1. Chọn nó.
- Trong phần @implementation, trên phương thức -awakeFromNib, call -setTarget: và -setDoubleAction: trên IBOutlet được khai báo ở bướC# 1 và được kết nối ở bướC# 2.
Đây là trích đoạn từ đại biểu xem bảng của tôi. Tôi có đại biểu của tôi cũng thiết lập như là nguồn dữ liệu, vì vậy đó là lý do tại sao bạn sẽ thấy cả hai giao diện NSTableViewDelegate và NSTabeViewDataSource liên kết với nó.
// Đoạn trích giao diện.
@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
// Trích đoạn triển khai.
@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...
}
Hy vọng điều này sẽ hữu ích.
Bạn có thể làm điều tương tự với các ràng buộc, trước hết là tuyên bố một mentod trong file .h
-(IBAction)openWindow:(id)sender
trong file .m thực hiện cùng
-(IBAction)openWindow:(id)sender
{
//do something here;
}
phải nib rằng nơi bạn xem bảng hiện tại, chọn xem bảng và nhận tab cuối cùng thứ hai của thanh tra thuộc tính, mở liên kết kiểm tra đối số để kiểm tra xem chủ sở hữu tập tin, mô hình khóa chính phải là "tự", tên bộ chọn sẽ là "openWindow: ", cùng một quá trình thực hiện với" mục tiêu nhấp đúp "tiết lộ re, Thao tác này sẽ hoạt động
Như PR Singh đã nói, bạn có thể sử dụng kết buộc cacao, bạn cũng có thể chuyển qua các selectedObject.
Chọn bảng Xem ở của bạn trong IB sau đó trong Bindings thanh tra đặt hai bindings này như sau:
>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:
đâu myMethod được thực hiện như
- (void)myMethod:(NSArray*)selectedObjects
{
NSLog(@"%@", selectedObjects);
}
Đây cũng là được ghi lại ở đây: https://developer.apple.com/library/mac/qa/qa1472/_index.html
Làm việc như một sự quyến rũ. – groomsy
Nếu ai đó tìm kiếm một phiên bản 2.0 nhanh chóng: Đây là những gì phù hợp với tôi. Có vẻ dễ hơn nhiều so với mã C Mục tiêu.
@IBOutlet weak var searchResultTable: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
searchResultTable.doubleAction = "doubleClickOnResultRow"
}
func doubleClickOnResultRow()
{
print("doubleClickOnResultRow \(searchResultTable.clickedRow)")
}
Điều này thực sự hữu ích. Đối với những người muốn biết thêm về 'doubleAction', hãy xem [link] này (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableView_Class/index.html#//apple_ref/occ/instp/NSTableView/doubleAction). –
Đối với Swift 3, bộ chọn chức năng sẽ là 'searchResultTable.doubleAction = #selector (doubleClickOnResultRow)' –
Bạn có thể kết nối hành động nhấp đúp trong Trình tạo giao diện. Kiểm soát nhấp vào chế độ xem bảng của bạn (đảm bảo rằng bạn đang xem chế độ xem bảng , không phải chế độ xem cuộn hoặc chế độ xem clip hoặc cột bảng) để có bảng điều khiển kết nối. Tìm mục “doubleAction” trong phần “Tác vụ đã gửi”. Kết nối nó với IBAction mà bạn chọn.
Dễ dàng vuốt ve chanh. Bạn có thể nhận hàng được nhấp từ phương thức clicksRow của chế độ xem bảng. Bạn vẫn cần ổ cắm được mô tả trong câu trả lời số hai. –
Bạn không nhất thiết cần một ổ cắm được kết nối với chế độ xem bảng, vì chế độ xem bảng cung cấp chính nó làm đối số người gửi của thông báo hành động. –
Ước gì tôi đã nhìn thấy điều này trước khi đào sâu vào công cụ nhận dạng cử chỉ của chính tôi ... – ghostatron
- 1. Bắt nhấp đúp vào Cocoa OSX
- 2. Nhấp đúp vào hàng DataGridView?
- 3. Javafx 2 nhấp và nhấp đúp vào
- 4. NSTableView: viền màu xanh trên các hàng được nhấp chuột phải
- 5. Làm sạch nhấp chuột đơn nhất + nhấp đúp vào xử lý trong Silverlight?
- 6. NSImageView nhấp đúp vào hành động
- 7. mục DataGridView nhấp đúp vào
- 8. Chỉ đạo sự kiện chuột [DllImport ("user32.dll")] nhấp, nhấp đúp vào
- 9. Xử lý nút chuột phải Nhấp đúp chuột vào hình dạng
- 10. Hiển thị menu ngữ cảnh trên nhấn ctrl/nhấp chuột phải vào tiêu đề của NSTableView
- 11. Nhấp đúp vào Làm Nổi bật
- 12. remap NERDTree Nhấp đúp vào 'T'
- 13. Làm cách nào để phân biệt giữa các nhấp chuột đơn và nhấp đúp trong .Net?
- 14. Nhấp đúp vào vs java -jar MyJar.jar
- 15. Hoạt động nhấp đúp vào TreeView trong .NET/C#
- 16. ASP.Net nhấp đúp vào vấn đề
- 17. Làm thế nào để bạn phát hiện một con chuột nhấp đúp chuột trái trong WPF?
- 18. Những người nhấp đúp vào tất cả mọi thứ trên các trang web ... jQuery nhấp đúp vào problemo
- 19. jQuery-JTable: thêm vào sự kiện nhấp chuột cho hàng?
- 20. Có điều gì giống như nhấp đúp chuột phải vào Win32 không?
- 21. Ngăn ngừa tình cờ nhấp đúp vào một nút
- 22. Cách lấy TreeTableNode nhấp đúp?
- 23. Tắt nhấp đúp vào hoàn tác trong VS2010
- 24. Nhấp đúp vào trình cài đặt trong Ubuntu?
- 25. javascript cho phép nhập vào nhấp đúp vào
- 26. Nhấp chuột phải vào JButton
- 27. Không thể chỉnh sửa NSTableView bằng cách nhấp vào
- 28. WinForms vô hiệu hóa nhấp đúp và chấp nhận tất cả nhấp chuột?
- 29. Tô màu một hàng trong một NSTableView
- 30. Làm thế nào để chọn một hàng trong một NSTableView khi nhấp vào một NSTextView bên trong một NSTableCellView?
Có cách nào để kết nối thông qua IB? –
Cũng nhớ đặt mục tiêu cho chế độ xem bảng bằng setTarget :, ngớ ngẩn nhưng có thể bị bỏ qua – nduplessis
Nếu bạn triển khai -setDoubleAction: làm phương thức ủy nhiệm hoặc bạn nên tạo IBOutlet iVar cho bảng và gọi -setDoubleAction: trên iVar? –