2013-02-07 24 views
17

Có ai biết cách tải lại/làm mới UICollectionView trong khi chế độ xem bộ sưu tập đang được hiển thị không? Về cơ bản tôi đang tìm kiếm một cái gì đó tương tự như phương pháp reloadData tiêu chuẩn cho một UITableview.Làm mới UICollectionview

+5

Có lẽ tôi hiểu lầm, nhưng UICollectionView triển khai reloadData. – danh

Trả lời

45

Bạn chỉ có thể gọi [self.myCollectionView reloadData]; phần riêng lẻ và các mặt hàng cũng có thể được nạp lại:

[self.myCollectionView reloadSections:indexSet]; 
[self.myCollectionView reloadItemsAtIndexPaths:arrayOfIndexPaths]; 
+9

WFIW Tôi tin rằng lý do tại sao mọi người gặp phải vấn đề này là vì họ thường gọi [myTableView reloadData] nhưng với UICollectionViews bạn phải gọi [myCollectionView.collectionView reloadData]. – capikaw

+0

[self.myCollectionView reloadData]; chỉ gọi một lần. muốn tải lại tất cả dữ liệu. –

9
[self.collectionView reloadData]; 
+0

Trong khi điều này thực sự sẽ đạt được kết quả mong muốn, sử dụng reloadData vẽ lại tất cả các ô và có thể ảnh hưởng đến hiệu suất. – DrunkenBeard

+0

Không phải là một ý tưởng tốt, bởi vì tải lại toàn bộ bảng bạn nhận được hiệu quả xấu và năng lượng được rút ra. – Karsten

0

Cách đúng và tốt nhất là sử dụng

NSMutableArray *indexPaths = [NSMutableArray array]; 
//prepare some data 
//batchupdate as block 
[self.collectionView performBatchUpdates:^{ 
    //operations like delete 
    [self.collectionView deleteSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, count)]]; 
    [self.collectionView insertItemsAtIndexPaths:indexPaths]; 
} completion:^(BOOL finished) { 
    // call something when ready 
    } 
}]; 

và tất cả được precomputed một độc đáo hoạt hình . Cách tốt nhất là loại bỏ và thêm tất cả các yếu tố trước để tránh xung đột.

+1

Bạn đã lưu ngày của tôi! Cảm ơn –

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