2011-12-28 27 views

Trả lời

19

Một TableViewController là một ViewController với một TableView được xây dựng trong. Điều này sẽ có các phương pháp đại biểu cần thiết đã được tuyên bố và thiết lập. VC này đã là một đại biểu TableView và nguồn dữ liệu. Nó không thể thay đổi kích thước. Upside là dễ sử dụng, nhược điểm là rất hạn chế tính linh hoạt.

Một TableView chỉ là một TableView (phân lớp của UIView). Nó có thể được thêm vào một ViewController và thay đổi kích cỡ, được sử dụng cùng với một đối tượng dựa trên khung nhìn khác, vv. tính linh hoạt).

Một lưu ý khác là khi sử dụng các ô Static TableView mới (một phần của iOS5), bạn phải sử dụng TableViewController.

+0

Điểm tốt khi đề cập đến việc thiếu thay đổi kích thước/chia sẻ 'UITableView' với các điều khiển khác trên cùng một màn hình khi sử dụng' UITableViewController'. Vâng, mặt khác, người ta luôn có thể sử dụng 'tableHeaderView' và phần' tableFooterView' cho các điều khiển khác. – Till

+0

Đúng, nhưng khi thực hiện các công cụ như có một SearchBar tĩnh (không cuộn), một VC với một TableView hoạt động tốt. –

4

UITableViewController là lớp con của UIViewController. Nó đã giả sử bạn sẽ có UITableView làm rootView của bạn, vì vậy bạn đã có quyền truy cập từ mã này đến một tableView (self.tableView). Nó triển khai thực hiện UITableViewDataSource và giao thức UITableViewDelegate. Nó cũng cung cấp cho bạn rất nhiều phương pháp để bạn ghi đè lên. Nó cho phép bạn không phụ thuộc vào tập tin XIB, bởi vì bạn đã biết những gì bạn sẽ có (UITableView như một rootView).

Các UITableView chỉ là UIView, thông thường bạn sẽ phải tuân thủ các giao thức tôi đã nêu trên trong UIViewController của bạn để cư (nguồn dữ liệu) và làm việc với nó (đại biểu), và có thể bạn phải tạo một IBOutlet cho số UITableView của bạn.

Một mặt bạn có tốc độ nhưng bạn không linh hoạt như đường dẫn khác. Mặt khác bạn có ngược lại.

+0

Câu trả lời của bạn nói chung là đúng nhưng một chút trung tâm IB cho khẩu vị của tôi. Chỉ cần làm rõ, IBOutlets chắc chắn chỉ cần thiết trong trường hợp bạn định sử dụng InterfaceBuilder để đặt ra các khung nhìn của bạn. Nhiệm vụ đó có thể chắc chắn cũng tốt (đôi khi tốt hơn) được thực hiện bằng cách sử dụng mã đơn giản. – Till

+0

Tôi thích sử dụng 'InterfaceBuilder' bất cứ khi nào có thể, nó nhanh hơn và nó giữ mã sạch. Tất nhiên bạn có thể khai báo một 'UITableView' trong mã của bạn và chỉ cần thêm nó' UIView' của bạn, mặc dù tôi không thích nó. – Peres

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