2010-12-29 9 views
8

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

section 1 header 
row 
section 2 header 
section 3 header 
row 
row 
... 

(ध्यान दें कि धारा 2 कोई पंक्तियां हैं)

मैं

[self.tv beginUpdates]; 
    [self.tv reloadRowsAtIndexPaths:ip withRowAnimation:UITableViewRowAnimationNone]; 
    [self.tv endUpdates]; 
के माध्यम से मेरी तालिका में पंक्तियों के लिए अद्यतन प्रदर्शन कर रही है:

मेरी मेज मान लीजिए इस प्रकार संरचित है

मैं नहीं चाहता कि कोई एनिमेशन हो। मैं सिर्फ पंक्ति को अद्यतन करना चाहता हूं। मुद्दा यह है कि यह रणनीति प्रत्येक पंक्ति और मेरी तालिका में अनुभाग सेक्शन 3, पंक्ति 1: अंतिम खंड की पहली पंक्ति को छोड़कर काम करती है। जब मैं इस पंक्ति को अद्यतन करता हूं (जो वास्तव में सही इंडेक्सपैथ का उपयोग कर रहा है), एनीमेशन प्राप्त करने के बजाय, पंक्ति इस छोटी सी कूद को करती है, जैसे कि यह पुराने या किसी चीज़ को बदलने के लिए एक नई पंक्ति में फिसल रही है। पंक्ति इतनी थोड़ी सी स्लाइड करती है, फिर वापस आती है, जैसे कि मैं एक पंक्ति डाल रहा था। मुझे लगता है कि यह हेडर गणनाओं के साथ कुछ करने के लिए है, लेकिन मैं ऊंचाई के लिए सही मान वापस लौटता है ForHeaderInSection।

क्या किसी ने इस व्यवहार को देखा है?

+0

मैं इसे भी आईओएस 5 में देख रहा हूं। क्या आपको एक समाधान मिला? – tarmes

+0

मुझे कभी समाधान नहीं मिला, नहीं। – jimt

+0

अभी भी आईओएस 7 पर एक ही समस्या है। क्या आपको कोई समाधान मिल रहा है? –

उत्तर

0

मुझे आश्चर्य है कि इस अद्यतन केवल परिदृश्य में startUpdates और endUpdates आवश्यक हैं या नहीं।

+0

मैंने उसी परिणाम का उत्पादन करके और बिना प्रयास किया है। – jimt

+0

क्या आपने यह जांचने के लिए RowAnimation param को बदलने की कोशिश की है कि आप कम से कम एनिमेट करते हैं जब आप पूछते हैं? – VdesmedT

+0

ठीक है, यह वास्तव में जिस तरह से मैं इसे कह रहा हूं उसे एनिमेट नहीं करता है। यह निर्दिष्ट करता है कि मैं कौन सी एनीमेशन निर्दिष्ट करता हूं, यह हमेशा छोटी छलांग करता है। क्या इसका मतलब कुछ भी है? – jimt

-1

मुझे एक ही समस्या थी।

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]

और फिर से ताज़ा इसे मैन्युअल रूप से एक कस्टम सेटअप पद्धति का उपयोग करके या बस फोन करके:

[cell setNeedsLayout]

अधिक जानकारी के लिए, देखें समाधान का उपयोग कर तालिका से सेल लाने के लिए था :

UITableView reloadRowsAtIndexPaths graphical glitch

+0

यह समाधान मेरे लिए काम नहीं किया है। NSFetchedResultsChangeMove में मैं सेल को अपडेट करने के साथ-साथ moveRowAtIndexPath को कॉल करने का प्रयास कर रहा हूं। – malhal

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