2012-11-25 13 views
7

का उपयोग करते समय allowsMultipleSelection के साथ allowsMultipleSelection के साथ सेट करने के लिए केवल एक दर्जन आइटम चयन योग्य होते हैं। UICollectionViewDelegatecollectionView:didSelectItemAtIndexPath: पर कॉल करना बंद कर देता है।बहु-चयन के साथ UICollectionView

यह बहुत यादृच्छिक प्रतीत होता है। आप कुछ आइटम चुन सकते हैं, नीचे स्क्रॉल करें, कुछ और चुनें, और किसी बिंदु पर आप कोई और आइटम चुनने में सक्षम नहीं हैं।

जब सेल छोटा होता है तो आप अधिक आइटम चुनने में सक्षम होते हैं। सेल जितना बड़ा होगा, कम आइटम जो आप चुनने में सक्षम हैं इससे पहले कि यह काम करना बंद कर देता है।

उत्तर

16

मुझे पता चला है कि मेरे पिछले उत्तर काम करते समय, यह सुपर कॉल नहीं कर सकता है। जबकि UICollectionReusableView के लिए प्रलेखन इसका उल्लेख करने में विफल रहता है, UITableViewCell के लिए प्रलेखन, जिसमें एक ही विधि है, करता है।

- (void)prepareForReuse 
{ 
    [super prepareForReuse] 
    // Your code here. 
} 

ओल्ड उत्तर:


यह UICollectionView साथ एक बग हो सकता है।

क्या हो रहा है कि पहले से चुने गए कोशिकाओं का पुन: उपयोग किया जा रहा है और चयनित राज्य को बनाए रखा जा रहा है। संग्रह दृश्य selected को "नहीं" पर सेट नहीं कर रहा है।

समाधान सेल के prepareForReuse में चयनित राज्य पुनर्स्थापित करने के लिए है:

- (void)prepareForReuse 
{ 
    self.selected = NO; 
} 

पुन: उपयोग सेल चुना जाता है, संग्रह दृश्य सेट हो जाएगा selected "हाँ" prepareForReuse कहा जाता है के बाद करने के लिए।

यह कुछ है UICollectionView अपने आप पर ऐसा करना चाहिए। शुक्र है कि समाधान सरल है। दुर्भाग्यवश मैंने अपने स्वयं के चुनिंदा राज्य को ट्रैक करके इस बग के आसपास काम करने में एक टन बिताया। मुझे का एहसास नहीं हुआ क्यों यह तब तक हो रहा था जब तक कि मैं छोटी कोशिकाओं के साथ किसी अन्य प्रोजेक्ट पर काम नहीं कर रहा था।

+0

धन्यवाद, ल्यूक! मैं मानता हूं, यह एक बग की तरह लगता है, इसलिए मैंने इसकी सूचना दी है: http://openradar.appspot.com/radar?id=2816402 – clozach

+0

@clozach: मैंने अभी इसे अपडेट किया है; मुझे लगता है कि यह सुपर कॉल नहीं कर सकता है। दस्तावेज़ीकरण इसका उल्लेख नहीं करता है, लेकिन 'UITableViewCell' के 'readyForReuse' के लिए दस्तावेज़ इसका उल्लेख करते हैं। यह सिर्फ एक दस्तावेज समस्या हो सकती है। – Luke

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