2012-07-30 12 views
6

मैं स्थिर कोशिकाओं के साथ UITableView का उपयोग करता हूं। यदि मैं reloadData का उपयोग करता हूं, तो सबकुछ ठीक है।UITableView reloadRowsAtIndexPaths पंक्ति छिपाता है

यदि मैं reloadRowsAtIndexPaths कोशिश करता हूं तो यह पंक्ति छुपाता है। पंक्ति दिखाई देती है यदि मैं तालिका को ऊपर खींचता हूं (जब सेल अपडेट किया जाता है)।

उत्तर

8

मुझे एक ही समस्या थी, यह एक बग प्रतीत होता है। मैंने कुछ प्रयोग किया और समस्या तब नहीं होती जब मैं एनीमेशन विकल्प UITableViewRowAnimationNone पर सेट करता हूं। कुछ अन्य रोचक चीजें तब होती हैं जब आप उस विकल्प को UITableViewRowAnimationTop पर सेट करते हैं।

+0

और .... आप कहां और कब सेट करते हैं? – Josh

+3

अभी भी तय नहीं है। धन्यवाद। – Maik639

10

यदि आपकी तालिका कक्ष स्थैतिक हैं (यानी, आप वर्तमान में प्रदर्शित होने वाले एक को बदलने के लिए एक ही सेल ऑब्जेक्ट का उपयोग कर रहे हैं), जो आप देख रहे हैं वह संक्रमण एनीमेशन का एक आर्टिफैक्ट है।

इस तरह से सोचें। आइए कहें कि आपने UITableViewAnimationOptionFade सेट किया है। जब सेल को प्रतिस्थापित किया जाना है, तो सेल को इसके साथ प्रतिस्थापित किया जाना चाहिए (जो इस मामले में सटीक एक ही वस्तु है) इसमें एक फीड-इन एनीमेशन जोड़ा गया है। फिर, जिस सेल को प्रतिस्थापित किया जा रहा है (फिर से, यह वही ऑब्जेक्ट है) इसमें एक फीड-आउट एनीमेशन जोड़ा गया है। अंत में, सेल वास्तव में वहां है, लेकिन यह अदृश्य है क्योंकि फीड-आउट एनीमेशन ने उस सेल ऑब्जेक्ट को अदृश्य बना दिया है।

एक गैर स्थैतिक तालिकादृश्य में, जिसमें एक प्रतिस्थापन कक्ष प्रतिस्थापित करने के लिए सेल की तुलना में एक अलग वस्तु है, यह कोई समस्या नहीं है, क्योंकि एनिमेशन दो अलग-अलग वस्तुओं में जोड़े जाते हैं।

+0

मुझे नहीं पता कि ढांचा/अनुशंसित पैटर्न कैसे सुनिश्चित कर सकता है कि कोशिकाएं वास्तव में अलग होंगी। क्या 'dequeueReusableCellWithIdentifier' की वही पुन: प्रयोज्य सेल को वापस छुपाए जाने की संभावना नहीं है? ऐसा लगता है कि ऐप्पल को बस इस बग को ठीक करना चाहिए। यह देखने का कोई कारण नहीं है कि यह एक सरल जांच के साथ दोनों परिदृश्यों का समर्थन नहीं कर सकता है कि यह देखने के लिए कि नया सेल == पुराना सेल है या नहीं। – devios1

+0

मुझे कोई रास्ता नहीं मिला है। मुझे लगता है कि एक रडार फ़ाइल। – leftspin

+0

अच्छा स्पष्टीकरण। तब समाधान क्या होगा? – Josh

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