2011-06-24 33 views
7

Tôi đang viết một ứng dụng iPad khá phức tạp - ứng dụng lớn đầu tiên của tôi.Tùy chỉnh UIView làm đại biểu và nguồn dữ liệu UITableView?

Ứng dụng này có một số UIViews tùy chỉnh hiển thị dữ liệu khá phức tạp, bao gồm cả bảng. Các khung nhìn này không chiếm toàn bộ màn hình, và có thể (và có khả năng) sẽ được nhiều người trong số chúng trên màn hình bất cứ lúc nào (mặc dù chỉ có một sẽ ở trong trạng thái "mở rộng" nơi bảng được hiển thị).

Dưới đây là một ví dụ cơ bản cần truyền đạt nguyên tắc cơ bản: Made with the nice Antetype prototyping app

Xin lưu ý rằng những điều này không phải là nghĩa vụ phải được trong popovers; thay vào đó, FamilyViews mở rộng để hiển thị dữ liệu chi tiết của họ. (Và cũng xin lưu ý rằng mockup này chỉ được tạo ra vì lợi ích của câu hỏi này và có rất ít để làm với giao diện của tôi sẽ trông như thế nào, tôi biết điều này là không thiết kế màn hình tốt)

Tôi chưa quyết định người đặt như các đại biểu và nguồn dữ liệu của những quan điểm tùy chỉnh:

  • Lập ViewController cho các đại biểu màn hình hiện tại và nguồn dữ liệu là unelegant, bởi vì nó không chỉ là một bảng đó là một phần của giao diện chính của VC.
  • Làm cho số Xem số chính ủy nhiệm và nguồn dữ liệu có vẻ hơi lạ đối với tôi bởi vì nó cảm thấy giống như cho khung nhìn quá hoạt động; biến nó thành một nửa bộ điều khiển.
  • Làm cho đối tượng mẫu cơ bản nguồn dữ liệu có vẻ quá chặt chẽ cùng nhau và cũng phá vỡ MVC. Và nó không trả lời câu hỏi ai sẽ là đại biểu.

Tôi đang có xu hướng hướng tới việc làm cho từng đại biểu và nguồn dữ liệu "FamilyViews" này cho bảng của riêng họ. Hành động trên các bảng này sẽ phải được ghép nối với đại biểu của FamilyView (ViewController), nhưng đó không phải là một vấn đề, phải không?

Bất kỳ ai cũng có một số đầu vào về điều này?

Trả lời

6

Chế độ xem phải biết cách tự vẽ và bố cục các chế độ xem phụ của chúng, tùy thuộc vào thuộc tính của chúng và đó là tùy chọn.

Bạn chắc chắn nên để lớp điều khiển trở thành đại biểu thay vì chính chế độ xem đó.

Bộ điều khiển đại biểu không phải là trình điều khiển chế độ xem hiển thị chế độ xem. Nó có thể dễ dàng là một lớp điều khiển hoàn toàn riêng biệt mà chỉ biết cách xử lý những gì khung nhìn yêu cầu.

+0

Cảm ơn câu trả lời của bạn. Tôi đã nghĩ về điều đó. Vì vậy, bạn đang nói tôi nên tạo một lớp mới 'FamilyMembersTableViewController' (đó không phải là một lớp con viewController) và nhanh chóng rằng mỗi lần tôi cần phải hiển thị một tableView mới? Và điều này sẽ hoạt động như một sự thay đổi giữa mô hình 'Gia đình' và 'FamilyView'? Điều này sẽ giữ cho MVC sạch sẽ, nhưng có vẻ hơi không cần thiết, vì FamilyViews rất chuyên nghiệp, và sẽ được kết hợp chặt chẽ với tableControllers của chúng. – fzwo

+0

Tôi nghĩ rằng một bộ điều khiển riêng biệt là giải pháp tốt nhất. Trong ver. 2.0 của ứng dụng của bạn, bạn sẽ triển khai tất cả những thứ tuyệt vời này, điều đó chỉ có ý nghĩa trong bộ điều khiển, và sau đó bạn sẽ phải cấu trúc lại. Nếu bạn làm theo cách MVC để làm điều đó ngay bây giờ, bạn sẽ cảm ơn bản thân sau này. :) –

+0

Tôi càng nghĩ về điều này, rõ ràng hơn nó trở thành rằng đây là con đường để đi. Tôi đã thực hiện điều này, và nó không có tác dụng phụ bị bệnh.Cảm ơn bạn đã giúp tôi xem các giải pháp mà nên có được rõ ràng :) (Mặc dù bây giờ tôi phải đối mặt với một vấn đề khó khăn hơn: Tôi nên đặt tên cho lớp này? Để ở trong ví dụ, 'FamilyMemberTableViewController' có vẻ rõ ràng và khó hiểu, vì nó là không phải là một lớp con 'UIViewController' và' UITableViewController', nhưng nó * là * một bộ điều khiển cho 'UITableView'.) – fzwo

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