Để vô hiệu hóa việc tái sử dụng các tế bào, hãy khử đi ô của bạn bằng một số nhận dạng cụ thể cho đường dẫn chỉ mục ô đó và đăng ký số nhận dạng đó trước khi thực hiện.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = [NSString stringWithFormat:@"Identifier_%d-%d-%d", (int)indexPath.section, (int)indexPath.row, (int)indexPath.item];
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:identifier];
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
// ...
// ...
// ...
}
Lưu ý rằng việc sử dụng lại không hoàn toàn tắt theo phương pháp trên do có số nhận dạng cho mỗi ô, đó là điều mọi người có thể sẽ cần. Nhưng nếu bạn cần phải hoàn toàn vô hiệu hóa các tế bào tái sử dụng, bạn có thể làm như sau.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static int counter = 0;
NSString *identifier = [NSString stringWithFormat:@"Identifier_%d", counter];
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:identifier];
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
counter++;
// ...
// ...
// ...
}
QUAN TRỌNG: Tôi chỉ trả lời câu hỏi ở đây, điều này là hoàn toàn không được khuyến khích , đặc biệt là phương pháp thứ hai. Tôi sử dụng phương pháp đầu tiên trên một trường hợp mà tôi có nhiều hướng cuộn và có một số phương pháp đại biểu liên quan đến tập trung vào tvOS mà tôi cần phải nhận được gọi cho mỗi tế bào.
Nguồn
2016-02-29 21:57:07
Tồi tệ hơn không được đề xuất; không có cách nào để hủy đăng ký tất cả các số nhận dạng đó, vì vậy ứng dụng của bạn có thể sẽ gặp sự cố khá nhanh chóng. :-) – dgatwood