Tôi có một ứng dụng Dữ liệu cốt lõi không dựa trên tài liệu. Có một số NSTreeController
quản lý tập hợp các đối tượng được hiển thị trong một danh sách nguồn NSOutlineView
. Chúng là các loại thông thường: tiêu đề, thư mục, thư mục thông minh, v.v.NS (Array | Tree) Bộ điều khiển Kiến trúc cho nhiều NSViewControllers
Mỗi đối tượng vùng chứa này có bộ sưu tập gồm contents
đối tượng. Tôi có ba bộ điều khiển xem riêng biệt hiển thị các đối tượng này theo nhiều cách khác nhau (NSTableView
và hai chế độ xem đồ họa tùy chỉnh, nếu bạn thực sự muốn biết) Nhưng đây thực sự chỉ là ba bản trình bày khác nhau của cùng một dữ liệu. Chúng phải luôn hiển thị cùng một đối tượng, chia sẻ cùng một lựa chọn, v.v.
Tôi cũng đang sử dụng một hệ thống phân cấp là NSViewController
để quản lý chế độ xem của mình. (Nếu tôi biết về tuyệt vời của Cathy Shive KTUIKit
vào thời điểm đó, tôi đã sử dụng điều đó, nhưng bộ điều khiển xem của tôi rất giống với - và rất nhiều cảm hứng của - cô ấy)
Hiện tại, tôi có một số NSTreeController
trong trình điều khiển chế độ xem cho chế độ xem danh sách nguồn. Tôi cũng có một NSArrayController
trong mỗi bộ điều khiển chế độ xem phụ được gắn với NSTreeController
qua một số đường dẫn khóa quá phức tạp.
Vì vậy, những gì cần phải thay đổi, theo ý kiến của tôi, là như sau:
- Các
NSTreeController
nhu cầu di chuyển ra khỏi điều khiển quan điểm phác thảo của. - Có phải là một đơn
NSArrayController
rằng mỗi chế độ xem nội dung có thể bị ràng buộc thay vì ba chế độ xem riêng biệt. Mặc dù tôi ít chắc chắn về điểm này.
Điều tôi đang gặp khó khăn là tìm ra trong đó những nội dung này sẽ hiển thị. Tôi đang gặp khó khăn trong việc quyết định đối tượng nào, nếu có, thực sự "sở hữu" các bộ điều khiển khác nhau. Bộ điều khiển chế độ xem gốc có sở hữu không? Bộ điều khiển cửa sổ? Vì đây là dữ liệu cấp ứng dụng, tôi có đi xa như vậy để làm cho các ứng dụng này thuộc quyền của App Delegate không? (Tôi có thể tưởng tượng một trường hợp mà một sử dụng có thể muốn mở nhiều cửa sổ, mặc dù đó không phải là hiện đang được hỗ trợ) StackOverflow hive tâm nghĩ gì?
Cảm ơn phản hồi chu đáo của bạn! Tôi đã luôn luôn coi bộ điều khiển đối tượng cũng được xem nhiều hơn. Đó là một phần của lý do cho sự do dự của tôi ở đây :-) Tôi đã không nghĩ về việc sử dụng representObject cho các bộ điều khiển; Tôi đã từ bỏ bản thân mình để thực hiện các ràng buộc theo lập trình. Động lực cho câu hỏi này là tôi đã đạt đến một điểm mà tôi phải tái cấu trúc lại. Nó quá đau đớn để quản lý tất cả sự phức tạp của việc có bộ điều khiển ở những nơi kỳ lạ. Tôi cũng đã loại trừ ứng dụng đại biểu là địa điểm thích hợp. Cửa sổ cảm thấy giống như nơi hợp lý nhất cho nó. – Alex