Tôi đã phát hiện ra rằng trong khi câu trả lời trước đó của tôi hoạt động, nó có thể do không gọi siêu. Trong khi tài liệu cho UICollectionReusableView
không đề cập đến điều này, tài liệu cho UITableViewCell
, có cùng phương pháp, thực hiện.
- (void)prepareForReuse
{
[super prepareForReuse]
// Your code here.
}
Cũ Trả lời:
Đây có thể là một lỗi với UICollectionView
.
Điều đang xảy ra là các ô đã được chọn trước đó đang được sử dụng lại và duy trì trạng thái đã chọn. Chế độ xem bộ sưu tập không được đặt selected
thành "KHÔNG".
Giải pháp là để thiết lập lại trạng thái được chọn trong prepareForReuse
của tế bào:
- (void)prepareForReuse
{
self.selected = NO;
}
Nếu các tế bào tái sử dụng được chọn, xem bộ sưu tập sẽ thiết lập selected
để "YES" sau prepareForReuse
được gọi.
Đây là điều mà UICollectionView
nên tự thực hiện. Rất may là giải pháp đơn giản. Thật không may tôi đã dành rất nhiều thời gian làm việc xung quanh lỗi này bằng cách theo dõi trạng thái lựa chọn của riêng tôi. Tôi đã không nhận ra lý do tại sao nó đã xảy ra cho đến khi tôi đang làm việc trên một dự án khác với các tế bào nhỏ hơn.
Cảm ơn bạn, Luke! Tôi đồng ý, điều này giống như một lỗi, vì vậy tôi đã báo cáo lỗi: http://openradar.appspot.com/radar?id=2816402 – clozach
@clozach: Tôi vừa cập nhật điều này; Tôi nghĩ rằng nó có thể được gây ra bởi không gọi siêu. Tài liệu không đề cập đến điều này, nhưng các tài liệu cho 'PrepareForReuse' của' UITableViewCell' không đề cập đến điều này. Nó có thể chỉ là một vấn đề tài liệu. – Luke