Trong Thư viện đối tượng của Xcode, có hai tùy chọn mà người dùng có thể sử dụng để tạo chế độ xem bảng - xem bảng và bộ điều khiển xem bảng. Sự khác nhau giữa hai yếu tố này và khi nào chúng sẽ được sử dụng?iOS - Sự khác nhau giữa Table View và Table View Controller
Trả lời
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.
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.
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
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
Đ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
Đú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. –