trong ứng dụng ca cao của tôi, tôi cần một NSCell tùy chỉnh cho một NSTableView. Lớp con NSCell này chứa một NSButtonCell tùy chỉnh để xử lý một nhấp chuột (và hai hoặc ba NSTextFieldCells cho nội dung văn bản). Bạn sẽ tìm thấy một ví dụ đơn giản về mã của tôi bên dưới.NSButtonCell bên trong tùy chỉnh NSCell
@implementation TheCustomCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
// various NSTextFieldCells
NSTextFieldCell *titleCell = [[NSTextFieldCell alloc] init];
....
// my custom NSButtonCell
MyButtonCell *warningCell = [[MyButtonCell alloc] init];
[warningCell setTarget:self];
[warningCell setAction:@selector(testButton:)];
[warningCell drawWithFrame:buttonRect inView:controlView];
}
Vấn đề tôi đang mắc kẹt với là: (: các NSButtonCell chính xác hơn) bên NSCell này để hoạt động đúng cách tốt nhất/phải để có được nút đó là những gì? "công việc" có nghĩa là: kích hoạt thông báo hành động được chỉ định và hiển thị hình ảnh thay thế khi được nhấp. Ra khỏi hộp, nút không làm bất cứ điều gì khi được nhấp.
Thông tin/bài đọc về chủ đề này khó tìm. Bài viết duy nhất tôi tìm thấy trên mạng đã chỉ cho tôi triển khai
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp;
Đây có phải là cách chính xác không? Triển khai trackMouse: trong NSCell chứa của tôi? Và sau đó chuyển tiếp sự kiện tới NSButtonCell? Tôi đã có thể mong đợi chính NSButtonCell biết phải làm gì khi nó được click (và tôi thấy trackMouse: phương pháp nhiều hơn trong cunjunction với theo dõi chuột thực sự - không phải là một bánh xe đào tạo cho hành vi bấm 'chuẩn'). Nhưng nó có vẻ như nó không làm điều này khi được bao gồm trong một tế bào chính nó ... Có vẻ như tôi chưa nắm được bức tranh lớn trên các ô tùy chỉnh, ;-)
Tôi rất vui nếu ai đó có thể trả lời điều này (hoặc chỉ cho tôi một số hướng dẫn hoặc tương tự) từ kinh nghiệm của riêng mình - và cho tôi biết nếu tôi đi đúng hướng.
Cảm ơn trước, Tobi
Ở đâu trong đó bạn có nói với bảng để nói với dataSource của nó rằng nút đã được kiểm tra? – Richard
@ Jeremy W. Sherman: Đây có lẽ là một câu hỏi ngu ngốc, nhưng làm thế nào để bạn có được "nút của button | buttonRect |"? Tôi đã thử nhiều thứ khác nhau như [nút khung], nhưng điều đó dường như không hoạt động ... – houbysoft