2010-06-04 39 views

Trả lời

17

Quan điểm toàn bộ bảng được nạp lại, nó gọi cellForRowAtIndexPath để có được các tế bào cho tất cả các hàng và các phần của bạn ... làm như vậy nó cũng kêu gọi numberOfSections phương pháp tableView nguồn dữ liệu và numberOfRows phương pháp của nguồn dữ liệu tableview vv vv

+0

Nó được gọi là cellForRowAtIndexPath. Đôi khi nó không hề. –

+1

@JimThio Tôi đang gặp sự cố chính xác này, bạn có biết giải pháp tại sao cellForRowAtIndexPath của tôi không được gọi sau khi tôi tải lại dữ liệu không? – vinylDeveloper

+0

Bạn đã tìm thấy câu trả lời cho lý do tại sao cellForRowAtIndexPath không được gọi bằng cách gửi tableXem thông báo reloadData? – Beanno1116

1

Ngoài ra, để tham khảo trong tương lai, thông tin đó có sẵn trong tài liệu here. Sao chép/dán từ tài liệu của Apple:

Gọi phương thức này để tải lại tất cả dữ liệu được sử dụng để tạo bảng, bao gồm ô, phần đầu trang và chân trang, mảng chỉ mục, v.v. Để có hiệu quả, chế độ xem bảng sẽ chỉ hiển thị lại những hàng có thể nhìn thấy được. Nó điều chỉnh bù đắp nếu bảng co lại do tải lại. Đại biểu hoặc nguồn dữ liệu của chế độ xem bảng gọi phương thức này khi nó muốn xem bảng hoàn toàn tải lại dữ liệu của nó. Nó không nên được gọi trong các phương thức chèn hoặc xóa các hàng, đặc biệt là trong một khối hoạt ảnh được thực hiện với các cuộc gọi đến beginUpdates và endUpdates

0

Đối với câu trả lời chấp nhận là rất tốt. Nhưng tôi muốn đề cập đến tất cả các ô hiển thị sẽ được tạo lại. Thông thường đây không phải là một vấn đề lớn. Nhưng nếu thuộc tính được lưu trữ tableViewCell của bạn có chứa một số dữ liệu có thể bị mất.

Ví dụ: nhấp vào nút trên tableViewCell để yêu cầu một số dữ liệu từ internet và lưu dữ liệu đã truy xuất vào thuộc tính được lưu trữ. Nếu bạn reloadData thì dữ liệu đã truy xuất sẽ bị mất. Tất nhiên đây không phải là một thực sự thích hợp thực hiện một yêu cầu từ tableViewCell. Nhưng chỉ muốn giải thích tình huống này.