2013-02-07 21 views
17

क्या किसी को पता है कि संग्रह दृश्य प्रदर्शित होने पर UICollectionView को फिर से लोड/रीफ्रेश कैसे करें? असल में मैं UITableview के लिए मानक रीलोडडेटा विधि के समान कुछ ढूंढ रहा हूं।एक UICollectionview को रीफ्रेश करना

+5

शायद मैं गलतफहमी कर रहा हूं, लेकिन UICollectionView reloadData लागू करता है। – danh

उत्तर

45

तुम बस [self.myCollectionView reloadData]; व्यक्तिगत वर्गों और वस्तुओं कॉल कर सकते हैं भी पुनः लोड किया जा सकता है:

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

WFIW मेरा मानना ​​है कि लोग इस पर क्यों आ रहे हैं क्योंकि उनका उपयोग [myTableView reloadData] को कॉल करने के लिए किया जाता है लेकिन UICollectionViews के साथ आपको [myCollectionView.collectionView reloadData] को कॉल करना होगा। – capikaw

+0

[self.myCollectionView reloadData]; केवल एक बार कॉल करें। सभी डेटा फिर से लोड करना चाहते हैं। –

9
[self.collectionView reloadData]; 
+0

हालांकि यह वास्तव में वांछित परिणाम प्राप्त करेगा, reloadData का उपयोग करके सभी कोशिकाओं को दोबारा हटा देता है और प्रदर्शन को प्रभावित कर सकता है। – DrunkenBeard

+0

कोई अच्छा विचार नहीं है, क्योंकि पूर्ण तालिका को पुनः लोड करने से आपको खराब परफॉर्मेंस मिलता है और ऊर्जा खींची जाती है। – Karsten

0

सही और सबसे अच्छा तरीका है

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 
    } 
}]; 

उपयोग करने के लिए है और सभी precomputed हो जाता है एक अच्छी तरह से एनिमेटेड । सर्वोत्तम अभ्यास है कि विवादों से बचने के लिए पहले सभी तत्वों को हटाने और जोड़ने के लिए।

+1

आपने मेरा दिन बचाया! धन्यवाद –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^