2009-03-19 34 views

Trả lời

34

Gọi phương thức reloadData làm mới dữ liệu ngay khi phương thức được gọi. Nó không chờ đợi cho bảng được cuộn. Đảm bảo nguồn dữ liệu (mảng hoặc từ điển hoặc bất cứ nơi nào bạn đã lưu các giá trị) được thay đổi trước khi bạn gọi reloadData.

+7

Không có vẻ để làm việc với một tế bào xem bảng tùy chỉnh. Dữ liệu không thay đổi cho đến khi chế độ xem bảng được cuộn. Có thể tôi có lỗi trong phương thức ô xem bảng tùy chỉnh của mình. – Genericrich

+1

Tôi cũng sử dụng ô tùy chỉnh. Công trình tuyệt vời cho tôi. Bạn phải đã bỏ lỡ một cái gì đó trong mã. Bạn có thể gửi mã không. có lẽ chúng ta có thể tìm thấy một cái gì đó – lostInTransit

+2

Nếu bạn đang sử dụng một tập tin nib để thiết kế quan điểm của bạn, đừng quên kết nối bảng bạn đang gọi reloadData trên trong mã vào bảng trong ngòi bút của bạn. Nó xảy ra dễ dàng vì bạn cần kết nối đại biểu và nguồn dữ liệu. –

33

Bạn có làm mới dữ liệu khỏi chuỗi chính không? Nếu vậy, bạn cần phải gọi phương thức reloadData bằng cách sử dụng phương pháp sau đây:

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

Vì vậy, đối với một tableView nó sẽ là:

[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

19

Chỉ cần một bản cập nhật năm 2013, bạn cũng nên có thể tải lại dữ liệu, miễn là bạn sử dụng

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.tableView reloadData]; 
}); 

GCD thật tuyệt vời!

+0

Đây phải là câu trả lời được chấp nhận. Nếu bạn hy vọng cho reloadData đơn giản để thực sự làm mới giao diện người dùng mà không có bất kỳ loại tương tác nào, thì đây là cách để làm điều đó .. – Markus

+0

Bạn có thể giải thích thêm lý do tại sao nó nên được thực thi trên luồng chính không? – jchnxu

-5

Các mã sau đây giúp bạn để tải lại bảng trong khi bạn tìm kiếm rằng:

[self.tableView reloadData]; 
+4

Thực hành kém để gọi những phương pháp đó – AlexeyVMP

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