Tôi có chế độ xem tùy chỉnh trong ô bảng tùy chỉnh. Mỗi lần một thuộc tính cụ thể trên chế độ xem tùy chỉnh được thay đổi, tôi gọi số [self setNeedsDisplay]
sẽ vẽ lại chế độ xem theo số - (void)drawRect:(CGRect)rect
. Thuộc tính đó được đặt trong chế độ xem bảng của tableView:cellForRowAtIndexPath:
của đại biểu. Nhưng khi chế độ xem bảng lớn hơn màn hình và các ô phải được sử dụng lại, drawRect
không được gọi mỗi lần setNeedsDisplay
là. Đặc biệt là khi tôi lướt nhanh bàn. Cuộn chậm hoạt động tốt. Điều này dẫn đến thông tin trong các ô đầu tiên và cuối cùng thường không chính xác.setNeedsDisplay không phải lúc nào cũng gọi drawRect
Trong nhật ký tôi có thể thấy rằng thông thường, đối với mỗi cuộc gọi đến setNeedsDisplay
có một cuộc gọi đến drawRect
, nhưng khi tôi di chuyển xem bảng một cách nhanh chóng có những cuộc gọi hơn để setNeedsDisplay
hơn drawRect
. Chắc chắn phải có một tỷ lệ một-một ở đây.
Tôi sử dụng cùng một chế độ xem tùy chỉnh trong UIView bình thường và nó vẽ lại hoàn hảo mỗi khi tôi gọi setNeedsDisplay
. Sự cố có vẻ như bị cô lập với các chế độ xem bảng và sử dụng lại các ô.
Có ai biết điều gì đang xảy ra ở đây không? Có cách nào khác để buộc chế độ xem tùy chỉnh tự vẽ lại không?
Tôi không vẽ lại bảng. Chỉ là chế độ xem tùy chỉnh. – kareman
reloadData calls setNeedsHiển thị cho bạn vào đúng thời điểm. Bạn dường như đang chiến đấu với khung. Hãy để khung công tác quyết định cái nào cần cập nhật và chỉ triển khai tableView: cellForRowAtIndexPath: – amattn
reloadData làm cho tất cả các ô của bảng bị hủy, nguồn dữ liệu được truy vấn lại và các ô hiển thị được tái tạo. Đó là nhiều hơn là cần thiết để chỉ làm mới một tế bào duy nhất. – rpetrich