2011-09-02 42 views
17

Tôi có một số NSTableView và tôi muốn tắt lựa chọn hàng.NSTableView - Vô hiệu hoá lựa chọn hàng

Các cột của chế độ xem bảng được gắn với NSArrayController và nội dung của mảng không hiển thị trong chế độ xem bảng.

Tôi làm cách nào để thực hiện việc này chỉ bằng cách sử dụng bindings?

Trả lời

21

Tôi nghĩ rằng bạn sẽ cần phải sử dụng một TableViewDelegate và thực hiện

- (NSIndexSet *)tableView:(NSTableView *)tableView 
    selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes 
+0

Có lẽ, nhưng tôi hy vọng điều này sẽ không phải là trường hợp ... – ericg

+0

{return 0 ; } Tôi đoán? Dường như làm việc. –

13

Tôi nghĩ

- (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView 
{ 
    return NO; 
} 

là tốt hơn so với

- (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes 
+2

Bạn có thể đọc trong tệp tiêu đề: "Để có hiệu suất tốt hơn và kiểm soát tốt hơn lựa chọn, bạn nên sử dụng tableView: selectionIndexesForProposedSelection :." – Stephan

14

Trong khi câu trả lời trước làm việc, đây là một tùy chọn khác mà tôi thích sử dụng:

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex 
{ 
    return NO; 
} 
+0

Đây thực sự là phương pháp bạn muốn nếu bạn muốn vô hiệu hóa một số hàng và không chọn những hàng khác –

0

Là một lưu ý để hậu thế ...

Nếu bạn khai báo selectionIndexesForProposedSelection, sau đó shouldSelectRow chức năng sẽ bị bỏ qua. Chỉ trong trường hợp bạn đang tự hỏi như tôi đã làm sao sửa của tôi để shouldSelectRow không có hiệu lực thi hành ...

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/NSTableViewDelegate/tableView:selectionIndexesForProposedSelection:

Các vấn đề liên quan