2011-06-21 13 views
5

Tôi muốn thiết lập lựa chọn của mình theo chương trình trong một lớp khác.thiết lập lựa chọn của NSOutlineView theo chương trình (và nhận được lựa chọn của NSTableView)

Tôi có thể truy cập phiên bản NSOutlineView theo [[appDelegate outlineViewController] outlineView].

Ý tưởng đằng sau điều này, là tôi có chế độ xem có danh sách các mục (cũng có trong số outlineview) và tôi muốn người dùng có thể nhấp vào mục trong chế độ xem, để outlineviews Lựa chọn của bị thay đổi và do đó một chế độ xem mới (của mục đã chọn) xuất hiện.

Vì vậy, một lần nữa, Làm cách nào để tôi có thể thay đổi lựa chọn của chương trình theo số liệu của OutlineView?

Nếu câu hỏi có vẻ không rõ ràng, vui lòng cho tôi biết tôi có thể làm gì để giúp dễ hiểu hơn.

Trả lời

7

Nếu tôi hiểu chính xác bạn, tôi nghĩ bạn đang tìm phương pháp – selectRowIndexes:byExtendingSelection: của NSOutlineView. Lưu ý rằng NSOutlineView là một phân lớp của NSTableView.

+0

Nó không hoạt động khi chúng tôi sử dụng cho cây trong NSOutlineView. Bất kỳ cách nào để lựa chọn khi sử dụng 3-4 cấp độ của cây sâu? –

2

Đối với trường hợp của tôi,
Tôi đã có một NSTableView với các mục từ theo "Items xem danh sách",
và một OutlineView tương tự như sau:

  1. Chánh Một
    • smth
    • smth
    • smth
    • . . .
  2. Chánh B
    • smth
    • smth
    • . . .
  3. Items xem danh sách
    • item1
    • ITEM2
    • ITEM3

Chánh A và B là không quan trọng, nhưng họ đang ở đây để chứng minh, rằng có không phải là số dòng cố định trước "Chế độ xem danh sách các mục".

Vì vậy, những gì tôi đã làm, là tôi sử dụng phương pháp
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
trong đoàn NSTableView 's của tôi và trong việc sử dụng phương pháp
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];
để có được những dòng mới chọn trong tableView tôi.

Sau đó, tôi nhận được số hàng "Chế độ xem danh sách các mục" (tùy chọn động "Phụ huynh" được mở rộng hay không và số lượng trẻ em có) và cũng mở rộng chế độ xem "Danh sách mục" ", nếu nó chưa được mở rộng.

Tiếp theo, tôi đã thêm tất cả các số lại với nhau: clickedRowInTableView + rowNrOfItemsListView + 1, 1 cho hàng "Chế độ xem danh sách mục".

Sau đó, tôi đã sử dụng NSOutlineView 's – selectRowIndexes:byExtendingSelection: (cảm ơn bạn Nate, vì đã chỉ ra), để đặt hàng đã chọn trong OutlineView.

Tôi hy vọng điều này có thể giúp ích cho những người có cùng hoàn cảnh như tôi.

+0

Tôi rất vui vì bạn đã tìm được giải pháp! Nếu bạn cảm thấy vấn đề của mình đã được giải quyết đầy đủ, bạn nên đánh dấu câu trả lời hoặc câu trả lời của tôi là câu trả lời được chấp nhận để người xem trong tương lai biết rằng câu hỏi này đã được giải quyết. :) –