2014-09-07 16 views
8

मैं एक UICollectionView में एक सेल को फिर से लोड पर निम्नलिखित पोस्ट का पालन करने की कोशिश कर रहा हूँ एकल कक्ष को फिर से लोड:iOS: UICollectionView

UICollectionView update a single cell

मुझे पता है कि मैं अंत में कुछ है कि इस तरह दिखता है चाहता हूँ:

[self.collectionView reloadItemsAtIndexPaths:??]; 

लेकिन मुझे नहीं पता कि किसी विशेष सेल के इंडेक्सपैथ को कैसे ढूंढें और पास करें। क्या कोई भी पॉइंटर्स प्रदान कर सकता है?

मेरे पास एक एनएसएमयूटेबलएरे है जिसमें सभी सेल जानकारी (छवि दृश्य जो प्रत्येक सेल में उत्पन्न होते हैं) शामिल हैं। आदर्श रूप में, मैं जो करना चाहता हूं वह पृष्ठ पर संबंधित सेल को रीफ्रेश करने के लिए एनएसएमयूटेबलएरे की अनुक्रमणिका को पास करना है। लेकिन मुझे यकीन नहीं है कि संख्यात्मक सूचकांक को इंडेक्सपाथ में कैसे अनुवादित किया जाता है।

आपकी मदद के लिए अग्रिम धन्यवाद!

+0

जब से तुम cellForRowAtIndexPath लागू करने के लिए आप एक ही मार्ग का अनुसरण कर सकते हैं कामयाब रहे? –

उत्तर

17

यह आपके कार्यान्वयन पर निर्भर करता है और आपने अपनी कोशिकाओं को अनुभागों में कैसे समूहीकृत किया है, लेकिन मान लीजिए कि आपके पास एक सेक्शन है और आपके सरणी में प्रत्येक तत्व आपकी तालिका में एक पंक्ति से मेल खाता है।

आप एक सेल सूचकांक x में एक सरणी तत्व करने के लिए इसी को फिर से लोड करना चाहता है तो तुम सब करने की जरूरत है

[_collectionView performBatchUpdates:^{ 
    [_collectionView reloadItemsAtIndexPaths:@[[NSIndexPath x inSection:0]]]; 
} completion:^(BOOL finished) {}]; 

लिखना है इसके विपरीत, यदि आप सेल है, लेकिन अपने सूचकांक पथ पता लगाना चाहते हैं तो आप हमेशा कर सकते हैं कॉल [collectionView indexPathForCell:myCell]

+1

होना चाहिए [संग्रह दृश्य प्रदर्शन बैच अपडेट:^{ [संग्रह दृश्य पुनः लोड करें ItemsAtIndexPaths: @ [[NSIndexPath indexPathForRow: indexPath.row inSection: 0]]]; } पूरा होने: शून्य]; ' – jose920405

+0

नहीं, यह @ jose920405 नहीं होना चाहिए। आपके उदाहरण में आप पहले से मौजूद इंडेक्स पथ से इंडेक्स पथ बना रहे हैं! बस पुनः लोड करें ItemsAtIndexPaths: @ [indexPath] कृपया मेरे समाधान को फिर से देखें, कुछ भी गलत नहीं है –

+0

आपका कोड गलत है। लापता ब्रैकेट और ऐसे। मैंने इसे सही बनाने के लिए इसे संपादित किया। – GeneCode

8

खिलौना को इंडेक्सपैथ युक्त एक सरणी पास करना है जिसे आप पुनः लोड करना चाहते हैं।

[self.collectionView reloadItemsAtIndexPaths: indexpathArray]; 

NSIndexPath में कुछ संपत्ति नाम अनुभाग और पंक्ति है, दोनों एक सेल का प्रतिनिधित्व करते हैं। यदि आपके संग्रह दृश्य में एक सेक्शन है, तो आप अपना सेक्शन = 0 सेट करके NSIndexPath बना सकते हैं;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowIndex inSection:0]; 

यहां rowIndex आपकी सरणी अनुक्रमणिका है। बीटीडब्ल्यू आपको अपने द्वारा बनाए गए इंडेक्सपाथ के साथ एक सरणी बनाना है, फिर इसे reloadItemsAtIndexPaths पर पास करें।

आशा इस मदद करता है .. :)

-2
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *dic = @{@"option":[NSNumber numberWithBool:YES]}; 
    [self.array insertObject:dic atIndex:indexPath.row]; 

    [collectionView reloadItemsAtIndexPaths:@[indexPath]]; 
}