2009-04-02 27 views
5

Là một người khá mới phát triển iPhone, tôi đã cố gắng tìm các mẫu thiết kế tốt để quản lý nhiều bản xem trước, cụ thể là nơi các bản xem phụ cần cùng loại phương thức đại biểu được xác định.Cách tốt nhất để tổ chức nhiều bản xem trước là gì?

Ví dụ: tôi có chế độ xem nơi tôi cần trao đổi giữa 2 UITableView dựa trên hành động của người dùng. Cả UITableViews đều cần một đối tượng UITableViewControllerDelegate được định nghĩa để điền các hàng, v.v.

Bạn có biết rằng các nhà phát triển iPhone có kinh nghiệm quá tải bộ điều khiển xem chính làm đại biểu cho cả hai bản xem là đúng cách để làm việc không? Hiện tại tôi có 2 đối tượng được định nghĩa là mỗi đối tượng hoạt động như một đại biểu cho mỗi UITableView để cố gắng giữ cho mọi thứ được tổ chức tốt hơn. Nó hoàn thành những gì tôi cần nó, nhưng đây là một mô hình tốt để làm theo?

Tôi cho rằng có một số thực tiễn tốt nhất hiện có để tránh những cạm bẫy khác nhau với quản lý bộ nhớ và những điều thú vị như vậy. Cảm ơn trước!

Trả lời

5

Bạn có thể sử dụng chế độ xem làm vùng chứa để giữ các thành phần như bảng. Vì vậy, trong trường hợp bạn phác thảo, bạn sẽ có một chế độ xem vùng chứa và hoán đổi UITableViews trong và ngoài ...

Cách tiếp cận tốt sẽ là có bộ điều khiển chế độ xem riêng biệt cho mỗi bảng. Nếu không, nó chỉ là quá lộn xộn khi cố gắng theo dõi tập dữ liệu nào bạn đang hỗ trợ trên các phương thức ủy nhiệm xem bảng khác nhau, và làm cho việc tùy biến nhiều hơn với một bảng có thể không áp dụng cho một bảng khác. Điều quan trọng cần lưu ý khi sử dụng bộ điều khiển chế độ xem được soạn thảo là "self.navigationController" và các cuộc gọi liên quan sẽ không trả về bất kỳ thứ gì (vì chúng không thực sự là con của bộ điều khiển điều hướng của bạn), vì vậy bạn cần phải truyền tham chiếu hoặc xử lý khác một chút khác biệt trong các bộ điều khiển xem bảng.

1

Đó là cách tôi tự xử lý tình huống. Một bộ điều khiển và ủy nhiệm cho mỗi UITableView. Các nguồn dữ liệu có thể được tái sử dụng, nếu điều đó có ý nghĩa (nghĩa là cùng một dữ liệu được hiển thị trong cả hai UITableViews) Nếu không, bạn sẽ có rất nhiều ifs trong phương pháp đại biểu của bạn, kiểm tra xem tableview gửi tin nhắn.

Chuyển UITableXem âm thanh như công việc cho UINavigationController cho tôi. Thông thường trên iphone, bạn không chỉ sắp xếp lại các điều khiển của mình. Bạn tạo các màn hình hoàn chỉnh (trong mã hoặc bằng .nib thông qua InterfaceBuilder), chuyển đổi giữa chúng bằng UINavigationController hoặc UITabBar.

2

Nếu chỉ có một sự khác biệt nhỏ giữa hai ví dụ, nếu các ô bảng được đặt ra theo cách tương tự nhưng sử dụng dữ liệu hơi khác - tôi có thể sử dụng nếu câu lệnh, nhưng nếu không tôi sẽ đi với các đối tượng ủy nhiệm riêng biệt một số loại. Tách mối quan tâm là chìa khóa ở đây: nếu bạn đang viết một phương pháp thực hiện hai điều rất khác nhau, đó là dấu hiệu cho thấy mã của bạn không được tổ chức đủ tốt để có thể đọc, duy trì hoặc linh hoạt.

Ngoài ra, đừng quên rằng bộ điều khiển chế độ xem không là các đối tượng ma thuật mà bạn chỉ có thể sử dụng với thanh tab và bộ điều khiển điều hướng được Apple phê duyệt. Hoàn toàn hợp pháp để viết "bộ điều khiển xem chuyển đổi" của riêng bạn, có hai bộ điều khiển xem và chuyển đổi giữa chúng. Tuy nhiên, bạn sẽ cần thực hiện một số thử nghiệm để xác định xem bạn có cần gọi -viewWillAppear: và ilk của nó theo cách thủ công hay không - có một số máy móc ma thuật có thể hoặc không thể làm điều đó cho bạn, tùy thuộc vào nơi bạn thêm bộ điều khiển xem của mình trong hệ thống phân cấp.

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