2012-11-19 6 views
14

के बाद रीफ्रेश नहीं किया गया है, मैंने अपने स्टोरीबोर्ड (आईपैड) में एक दृश्य देखा है जिसमें UICollectionView है, दृश्य के निचले हिस्से में UIToolbar भी है। UICollectionView में मैंने UICollectionViewCell (iPadCellCollectionViewCell कक्षा द्वारा कार्यान्वित किया गया) जोड़ा है जिसमें कोर-प्लॉट ग्राफ (CPTGraphHostingView क्लास) एक और दृश्य शामिल है।यूआईसीओलेक्शन दृश्य का सेल हमेशा स्क्रॉल

मेरे पास एक्स नामक एक वर्ग है जो UICollectionViewDelegate और UICollectionViewDataSource लागू करता है।

दसवीं कक्षा में, मैं मेरे विचार की प्रत्येक कोशिका (ViewDidLoad में) कोर प्लॉट ग्राफ़ के लिए निर्माण और मैं UICollectionViewCell

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath]; 

MyChart* chart = [_charts objectAtIndex:indexPath.row]; 

cell.hostingView.hostedGraph = chart.barChart; 

return cell; 

} की सेल करने के लिए ग्राफ लिंक करने के लिए निम्नलिखित कोड है

यह ठीक काम कर रहा है, मेरे सभी ग्राफ स्क्रीन पर सही ढंग से प्रदर्शित होते हैं। समस्या तब होती है जब उपयोगकर्ता दृश्य को स्क्रॉल करता है, फिर एक या कई कक्ष "रिक्त" बन जाते हैं। मैं वास्तव में समझ में नहीं आता क्यों।

मैं बजाय इंटरफ़ेस बिल्डर में UICollectionViewCell में CPTGraphHostingView जोड़ने की, एक समाधान पाया है, मैं इसे अपने आप और पिछले कोड हो जाता है का निर्माण:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath]; 


[cell.contentView addSubview:[_hostingViews objectAtIndex:indexPath.row]]; 

return cell; 

}

के साथ इस कोड को सब कुछ है अच्छा कर रहा है। क्या कोई स्पष्टीकरण है कि यह काम नहीं कर रहा है जब मैं को UICollectionViewCell में आईबी के साथ जोड़ रहा हूं?

क्या यह विधि हर बार "addSubview" को कॉल करने का मुद्दा है? कोई स्मृति रिसाव नहीं है?

उत्तर

3

यह अनुभाग Insets का उपयोग करते समय UICollectionView में एक बग प्रतीत होता है। कोशिकाओं को अदृश्य नहीं मिलता है, वे कभी-कभी तेजी से स्क्रॉलिंग पर सीमाओं से गुम हो जाते हैं।

तो यदि आपके पास सामान्य रूप से प्रति पंक्ति 3 आइटम होंगे, तो आपको एक पंक्ति में एक आगे की वस्तु मिल जाएगी, लेकिन अगली पंक्ति के पहले स्थान पर कोई आइटम नहीं होगा।

यदि आप सीमाओं पर क्लिप न करने के लिए अपना यूआईसीओलेक्शन व्यू सेट करते हैं, और इसे अपने यूआई के शीर्ष पर ले जाएं, आपको यह गलत हस्ताक्षर सेल दिखाई दे सकता है।

मेरा समाधान अब तक अनुभागइन्ससेट का उपयोग नहीं करने के लिए था, और सामग्री हेडर्स में सामग्री और कुछ रिक्त स्थान का उपयोग करके इसे घेरे हुए थे।

मुझे ट्विटर पर एक ही समस्या के साथ कुछ अन्य लोगों को भी मिला। इसके बारे में एक बग रिपोर्ट भी है: 12353513

+0

मैं उस बग रिपोर्ट को कहां देखूं? – bandejapaisa

9

मुझे एक समान समस्या है। मैंने अपनी कस्टम सामग्री पर setFrame: पर कॉल किया है जब मैं एक पश्चाताप मजबूर कर इसे तय किया। आपके मामले में, उपवर्ग CPTGraphHostingView और ओवरराइड इस विधि:

-(void)setFrame:(CGRect)frame { 
    [super setFrame:frame]; 
    [self setNeedsDisplay]; // force drawRect: 
} 

संपादित करें:

-(void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes { 
    // apply custom attributes... 
    [self.hostingView setNeedsDisplay]; // force drawRect: 
} 

के बारे में: सेल विचारों को ताज़ा करने के लिए जब वे पुन: उपयोग कर रहे हैं एक आसान तरीका इस प्रकार iPadCellCollectionViewCell में applyLayoutAttributes: ओवरराइड करने के लिए है आपका कामकाज: सामग्री दृश्य में अधिक से अधिक सबव्यू होंगे, जो शायद एक अच्छी बात नहीं है। हालांकि, यदि आप नया जोड़ने से पहले किसी पुराने सबव्यू को हटा देंगे, तो यह भी ठीक होना चाहिए।

+2

मुझे क्षैतिज स्क्रॉल करते समय गलत स्थान में प्रतिपादित कोशिकाओं के साथ एक ही समस्या है, लेकिन दुर्भाग्यवश, इन दो सुधारों में से कोई भी मेरे लिए काम नहीं करता है। –

+0

ग्रेट, दोनों दृष्टिकोणों की कोशिश की और दोनों काम किया। – anka

+0

धन्यवाद दूसरा विकल्प मेरे लिए काम किया – slik

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

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