2013-04-20 13 views
8

में सभी कोशिकाओं के माध्यम से लूपिंग मेरे पास यूआईसीओलेक्शन है जिसमें छात्रों की संख्या और प्रत्येक आइटम को रिकॉर्डिंग उपस्थिति के लिए उपयोग किया जाता है। मैं इस तरह की सभी दृश्य कोशिकाओं के माध्यम से पाश हूँ।UICollectionview

for(attendancecollectionViewCell* cells in [[self collectionView] visibleCells]){ 

    NSLog(@"The switch value : %c",cells.attendanceSwitchLabel.isOn); 

} 

लेकिन, मैं उपस्थिति के लिए सभी कोशिकाओं के माध्यम से लूप करना चाहता था, न केवल दृश्यमान कोशिकाओं।

+0

जब तक आपको कोशिकाओं में हेरफेर करने की आवश्यकता न हो, आपको डेटा स्रोत के माध्यम से पुन: सक्रिय करना चाहिए जिससे कोशिकाएं कॉन्फ़िगर की गई हों। –

उत्तर

13

आप गैर-दृश्यमान कक्षों के माध्यम से लूप नहीं कर सकते हैं क्योंकि वे कक्ष मौजूद नहीं हैं। UICollectionView, UITableView की तरह, जैसे ही वे ऑफस्क्रीन होते हैं, कोशिकाओं का पुन: उपयोग करते हैं। यानी, यदि आप नीचे स्क्रॉल करते हैं, तो यह एक सेल लेता है जिसे स्क्रॉल किया गया है और इसे "नए" सेल के लिए उपयोग में स्क्रॉल करने के बारे में उपयोग किया जाता है।

यदि आप अपने संग्रह में प्रवेश के लिए राज्य रखना चाहते हैं, तो आपको इसे सेल से अलग से स्टोर करना होगा। उदाहरण के लिए, structs (या कस्टम NSObjects) का NSArray जो indexPath.row मान को मैप करता है।

आपके लिए एक और महत्वपूर्ण सवाल विशेष रूप से होगा: आप अपने लूप में क्या हासिल करने की कोशिश कर रहे हैं?

मुझे बताएं कि आपको अधिक जानकारी या नमूना कोड चाहिए या नहीं।

+0

मुझे लगता है कि मैं गैर-दृश्यमान कोशिकाओं तक पहुंचने के इच्छुक होने का वैध उदाहरण - इस पर मेरा प्रश्न यहां है यदि आपके पास एक सेकंड है http://stackoverflow.com/questions/33259244/how-to-redraw-non-visible-uicollectionviewcells -after-rotation-ready-for-when-r- – Greg

+3

"क्योंकि वे कक्ष मौजूद नहीं हैं": यह सच नहीं है। कोशिकाएं मौजूद हैं क्योंकि उनका पुन: उपयोग किया जाता है। वे मौजूद हैं और पुन: उपयोग करने की प्रतीक्षा कर रहे हैं। लेकिन मेरे पास पुनरुत्पादनीय सबूत है जहां कोशिकाएं दृश्य में नहीं हैं और फिर से उपयोग की जाती हैं (यानी: डेक्यूयूयूसेबलसेल को कॉल किए बिना)। – Softlion

+4

@ सॉफ़्ट्लियन मुझे एक ही समस्या थी। यह एक आईओएस 10 चीज है, जहां ऑफ-स्क्रीन जाने के बाद भी कोशिकाएं कभी-कभी रहती हैं। आप '' 'संग्रहView.prefetchingEnabled = NO''' – alemangui