2011-12-19 34 views
7

Tôi đã đọc một số bài viết về UITableView, bao gồm official doc và một số trên SO. Nhưng tình hình của tôi có vẻ khác.
Tôi muốn cập nhật Bảng mỗi lần lượt xem được tải. Và tôi phải tìm nạp dữ liệu bằng cách sử dụng yêu cầu HTTP.
Điều tôi nhận được bây giờ là:Cách cập nhật UITableView tại thời gian chạy, sau khi xem được tải

  1. Khi nhập chế độ xem bảng, tôi nên sử dụng yêu cầu HTTP không đồng bộ để cập nhật dữ liệu. Bởi vì tôi không muốn chủ đề chính chờ đợi. Một nơi để làm điều đó, nằm trong phương pháp tableView:cellForRowAtIndexPath:. Vì vậy, tôi trả về 0 cho không có dữ liệu tồn tại ở đầu.
  2. Khi tôi nhận phản hồi HTTP, tôi cập nhật các hàng trên sợi chính bằng cách sử dụng beginUpdates endUpdates insertRowsAtIndexPaths:withRowAnimation:
  3. Và tôi phải cập nhật "Nguồn dữ liệu" cùng một lúc, nhưng cách thực hiện?
    Hoặc tôi có nên tạo một chuỗi daemon và cập nhật dữ liệu của mình một lần trong một thời gian không? Vì vậy, dữ liệu sẽ sẵn sàng khi TableView được tải.
+0

Để lưu bản ghi, bạn có thể tham khảo một yêu cầu không đồng bộ, dưới dạng [không đồng bộ] (http://dictionary.reference.com/browse/asynchronous). Điều này không phải là âm thanh bảo trợ. Trân trọng, Thomas. –

Trả lời

13

Bạn sẽ làm điều đó như thế này:

  • Có một boolean hoặc một số biến nơi bạn đáng tin cậy có thể phát hiện cho dù bạn có tất cả dữ liệu.
  • Trong viewWillAppear, đặt lại mọi thứ. Bắt đầu tải dữ liệu của bạn.
  • Nếu bạn chưa có dữ liệu, bạn chỉ hiển thị một phần với một ô (một ô giữ chỗ đọc "Đang tải ..." và hiển thị một spinner, chẳng hạn).
  • Khi dữ liệu được tải hoàn toàn, bạn đặt bool hoặc bất kỳ thứ gì.
  • Gọi [self.tableView reloadData];

Trong tất cả các UITableViewDataSource phương pháp của bạn, bạn sẽ cần phải kiểm tra xem bạn đã có những dữ liệu đã được hay không. Nếu không, bạn trả về dữ liệu giữ chỗ.

+0

Tôi đã thử những gì bạn nói, Thật tuyệt vời! Cảm ơn! – Nickolas

1

[yourtablename reloadData]; sẽ giúp bạn relaod dữ liệu trong tableview, Bạn có thể gọi đây là khi bạn nhận được phản hồi từ máy chủ của bạn

1

Tôi không chắc chắn có một "phương pháp tốt nhất" cho những gì bạn đang cố gắng thực hiện ở đây. Tôi khuyên bạn nên thử phương pháp bạn có và xem liệu nó có cung cấp trải nghiệm người dùng đầy đủ hay không, và nếu không, hãy thử một thứ khác. Tôi chắc chắn sẽ đề nghị có một số loại "tải" chỉ số trong khi bảng là trống rỗng và chờ đợi phản ứng http.

Về mặt câu hỏi của bạn về "nguồn dữ liệu", nguồn dữ liệu của UITableView chỉ đơn giản là một đối tượng triển khai giao thức UITableViewDataSource mà bạn có thể đọc về here. Thông thường, bạn sẽ có XCode thiết lập đối tượng UITableViewController sẽ hoạt động với tư cách là cả đại biểu và nguồn dữ liệu cho chế độ xem bảng của bạn. Cách bạn lưu trữ dữ liệu của mình tùy thuộc vào bạn. Giao thức nguồn dữ liệu đơn giản cung cấp các phương thức mà theo đó một khung nhìn bảng sẽ "hỏi" dữ liệu cần tải.

+0

Cảm ơn bạn đã liên kết. – Nickolas

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