2010-01-12 27 views
5

Tôi có một số UIViewController nên có khả năng hiển thị tableView s với nhiều nguồn dữ liệu. Các UITableView kéo dài khoảng một nửa kích thước của màn hình, và có và lên và xuống nút cho phép bạn đi qua các dữ liệu khác nhau. Mỗi lần nhấn nút lên và xuống, tôi muốn sử dụng cuối cùng UIViewAnimationTransitionCurlDown hoặc một cái gì đó tương tự để hiển thị UITableView tiếp theo.Cách tốt nhất để xử lý nhiều UITableViews trong một UIViewController?

Câu hỏi đặt ra là: tôi có cần nhiều UIViewControllers để thực hiện việc này, với một số tableView được nhúng trong mỗi cái không? Tôi có nên tạo một phiên bản UITableView và thay đổi nguồn dữ liệu khi nhấn nút lên hoặc xuống không? Nếu nó chỉ là một ví dụ của UITableView, làm thế nào để tôi quản lý để có được một quá trình chuyển đổi curl trên một phần của màn hình cần thiết để làm cho nó trông giống như một mới tableView đang đến?

Trả lời

5

Tại sao không có mỗi chế độ xem bảng thuộc về riêng UITableViewController và lồng trong bộ điều khiển chế độ xem màn hình hiện tại? Bằng cách này, bộ điều khiển xem của màn hình có trách nhiệm trao đổi các bản xem con của nó, mỗi bộ điều khiển có một bộ điều khiển xem bảng có chứa logic cần thiết để hiển thị dữ liệu của chúng.

Cuối cùng, chức năng của bạn trông như thế nào. Có thể sẽ dễ dàng hơn khi triển khai mã nguồn dữ liệu chế độ xem bảng & mã đại biểu một lần, đưa nguồn dữ liệu thực vào lớp này - hoặc có thể dễ dàng viết mã nguồn dữ liệu tùy chỉnh hơn cho mỗi lần xem bảng.

+0

Bạn sẽ 'làm tổ' bộ điều khiển một chế độ xem với nhau bằng cách nào? Tôi hiểu việc thêm các bản xem trước và tất cả, nhưng một uitableviewcontroller? – randombits

+1

Bộ điều khiển xem "cha mẹ" của bạn sẽ chịu trách nhiệm tạo bộ điều khiển chế độ xem bảng thích hợp và hiển thị chế độ xem của chúng. Không có lý do gì khiến bạn không thể xem đồng thời nhiều lần trên màn hình, được điều khiển bởi các bộ điều khiển xem riêng biệt. – pix0r

+1

Yea, về cơ bản phương thức viewDidLoad của bạn có thể thực hiện một cách đơn giản như topTableController = [[MyTopTableController alloc] init]; topTableController.view = self.topTableXem; topTableController.delegate = tự; (hoặc làm một cái gì đó tương tự trong một tập tin nib) ... Có nhìn này đã có vẻ như nó chỉ là dễ dàng hơn để sử dụng một bộ điều khiển cho mỗi bảng hơn là cố gắng sử dụng một bộ điều khiển như là một đại biểu/ds cho nhiều bảng. Bạn có thể làm điều đó bởi vì các phương thức ủy nhiệm truyền vào một con trỏ tới UITableView mà bạn có thể nếu() hoặc switch() bật, nhưng nó có thể là một thiết kế sạch hơn để sử dụng nhiều "bộ điều khiển con" – Nimrod

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