आप बस ऊंचाई को नियंत्रित करने के तालिका दृश्य का उपयोग करने के लिए है। आप टेबल को बता सकते हैं कि निकालने के लिए कॉल का उपयोग करके एक सेल बदल दिया गया है और फिर विशिष्ट कक्षों को फिर से जोड़ना है, इसलिए आपको पूरी तालिका को फिर से लोड करने की आवश्यकता नहीं है - लेकिन प्रतिनिधि कॉलबैक तालिका का उपयोग करके ऊंचाई को लाया जाना चाहिए दृश्य: heightForRow: atIndexPath:
मुझे नहीं पता कि यह व्यावहारिक क्यों नहीं है। आपके पास चलने वाले एसिंच सिस्टमों की संख्या हो सकती है जो टेबल व्यू प्रतिनिधि द्वारा आयोजित केंद्रीय ऊंचाई कैश को अपडेट करते हैं - हर बार जब आप कोई सेल बनाते हैं तो आप इसे प्रतिनिधि के रूप में प्रतिनिधि को असाइन कर सकते हैं ताकि उसे टेबल पर वापस बात करने का तरीका हो और चलो यह पता है कि कोशिकाओं को पुनः लोड करने की आवश्यकता है और नई ऊंचाइयों क्या हैं।
यदि आप इसके बारे में सोचते हैं, तो खराब तालिका दृश्य एक स्क्रॉल व्यू है जिसे इन सभी अलग-अलग कोशिकाओं का प्रबंधन करना होता है और उन्हें दृष्टि से एक साथ रखना होता है - इसलिए यह एक सेल की बदमाश होने के लिए वास्तव में निर्दयी है और टेबल को दिए बिना फ्रेम को बदलना शुरू कर देता है देखें कि वैसे भी क्या हो रहा है। टेबल ड्राइव को छोड़ना और इसे बताएं कि क्या करना है।
स्रोत
2009-09-21 19:09:46
हाँ, यदि आप [tableView reloadData] को कॉल करते हैं तो यह प्रतिनिधि विधि 'tableView: heightForRow: atIndexPath: को कॉल करेगा: जहां आपके पास अपने डेटा के आधार पर उपयुक्त सेल ऊंचाई की गणना करने का मौका है। हालांकि, ध्यान रखें कि यदि आपके पास बहुत लंबी कोशिकाएं हैं या उनमें से बहुत सारे हैं तो स्क्रॉलिंग प्रदर्शन के मामले में यह महंगा हो सकता है। – runmad
यही कारण है कि ऊंचाई कैश भाग वास्तव में महत्वपूर्ण है, इसलिए आपको सिस्टम को बताने के लिए बहुत सारे काम करने की ज़रूरत नहीं है कि ऊंचाई क्या है। –
कनाडा डे के सुझाव के अनुसार, आपको [tableView reloadData] को कॉल करने की आवश्यकता नहीं है। इसके बजाय, आप [tableView startUpdates] को कॉल कर सकते हैं; [tableView endUpdates]; जो प्रत्येक सेल को पुनः लोड किए बिना तालिका को प्रत्येक सेल को फिर से मापने के लिए दृश्य करेगा (कॉल ऊंचाईफॉरफोरो: atIndexPath: प्रत्येक सेल के लिए)। – TomSwift