Để giải quyết một số câu hỏi của bạn.
Sự khác biệt chính giữa MonoTouch.Dialog và UITableView là với trước đây bạn "tải" tất cả dữ liệu mà bạn muốn hiển thị trước và sau đó quên nó. Bạn để MonoTouch.Dialog chăm sóc vẽ nó, đẩy các khung nhìn và chăm sóc các phần/phần tử. Với UITableView, bạn cần cung cấp các phương thức gọi lại để trả về số phần, tiêu đề cho các phần và chính dữ liệu.
UITableView có lợi thế là hiển thị một triệu hàng có cùng kích thước và cùng một ô, bạn không thực sự phải tải tất cả dữ liệu trả trước, bạn chỉ có thể đợi để được gọi lại. Điều đó đang được nói, điều này sẽ phá vỡ nhanh chóng nếu bạn sử dụng các ô có chiều cao khác nhau, vì UITableView sẽ phải truy vấn kích thước của tất cả các hàng của bạn.
Vì vậy, trong ngắn hạn:
(1) có, thậm chí nếu bạn sử dụng các tế bào tùy chỉnh, bạn sẽ được hưởng lợi từ mã ngắn hơn và một mô hình lập trình đơn giản hơn. Cho dù bạn sử dụng các tính năng khác của nó hay không, là tùy thuộc vào bạn.
(2) Đối với hiệu suất, vấn đề sẽ ghi lại số lượng hàng bạn sẽ có.Như tôi đã đề cập trước đây, nếu bạn đang duyệt một tập dữ liệu có khả năng lớn, bạn sẽ phải tải tất cả các ô đó trong bộ nhớ ở phía trước, hoặc giống như TweetStation, thêm các tính năng để tải "theo yêu cầu".
Thực tế là nó sẽ tiêu thụ nhiều bộ nhớ hơn, vì bạn cần tải dữ liệu của mình trong MonoTouch.Dialog. Kỹ thuật tối ưu hóa tốt nhất của bạn là giữ cho Elements của bạn rất nhẹ. Tweetstation ví dụ sử dụng một "TweetElement" mà chỉ giữ ID cho tweet, và tải các nội dung thực tế theo yêu cầu, để giữ cho kích thước của TweetElement trong bộ nhớ rất nhỏ.
Với UITableView, bạn không thanh toán cho mức giá đó. Nhưng nếu bạn không sử dụng một cơ sở dữ liệu nào đó, dữ liệu sẽ vẫn nằm trong bộ nhớ.
Nếu ứng dụng của bạn yêu cầu dữ liệu nằm trong bộ nhớ, thì bạn cũng có thể di chuyển dữ liệu thành các phần tử và sử dụng làm mô hình của bạn.
(3) Đây là một chút của một người đàn ông rơm. "Nguồn" dữ liệu của bạn không bao giờ thực sự độc lập với UIKit. Tôi biết rằng mọi người thích nói về các mô hình này như là có thể tái sử dụng, nhưng trong thực tế, bạn sẽ không bao giờ có thể tái sử dụng một UITableViewSource như một nguồn cho bất cứ điều gì nhưng một UITableView. Việc sử dụng chính là hỗ trợ các điều khiển có thể mở rộng mà không yêu cầu dữ liệu được nạp vào bộ nhớ phía trước, nó không thực sự tách riêng Mô hình khỏi Chế độ xem. Vì vậy, những gì bạn thực sự có là một lớp bộ chuyển đổi kết nối thế giới của UITableView với mô hình dữ liệu thực tế của bạn (cơ sở dữ liệu, danh sách XML, mảng trong bộ nhớ, kết nối Redis).
Với UITableView, mã bộ điều hợp của bạn sống trong hàm tạo và UITableViewSource. Với MonoTouch.Dialog, mã adatpro của bạn sẽ tồn tại trong mã để nạp RootElement ban đầu vào DialogViewController.
Vì vậy, có những lý do để sử dụng UITableView qua MonoTouch.Dialog, nhưng nó là không ai trong số những người ba Nhược điểm.
Tôi có xu hướng sử dụng nó cho các trường hợp tôi cần thực hiện nhập dữ liệu trong bảng. Đối với các bảng chỉ hiển thị thông thường, tôi tiếp tục thực hiện chúng theo cách thủ công. – Jason