मेरे ऐप में परिवर्तनीय ऊंचाई तालिका कक्ष होने की आवश्यकता है (जैसा कि प्रत्येक तालिका कक्ष ऊंचाई में भिन्न होता है, न कि प्रत्येक सेल को स्वयं का आकार बदलने में सक्षम होना चाहिए)।मैं आईफोन पर चरम ऊंचाई तालिका कक्ष कैसे कर सकता हूं?
मेरे पास एक समाधान है जो वर्तमान में काम करता है, लेकिन यह पतला और धीमा है।
मेरे वर्तमान समाधान:
से पहले तालिका सेल गाया जाता है, मैं गणना कैसे उच्च प्रत्येक कोशिका ऐसे -sizeWithFont:constrainedToSize:
अपने डेटा पर के रूप में आकार तरीकों को फोन करके की जरूरत है। मैं फिर ऊंचाइयों को जोड़ता हूं, कुछ पैडिंग के लिए अनुमति देता हूं और परिणाम डेटा के साथ संग्रहीत करता हूं।
तब जब मेरे UITableViewDelegate को -tableview:heightForRowAtIndexPath:
प्राप्त होता है तो मैं काम करता हूं कि उस सेल के लिए कौन सा आइटम प्रस्तुत किया जाएगा और उस ऊंचाई को वापस कर दें जिसे मैंने पहले गणना की थी।
जैसा कि मैंने कहा, यह काम करता है, लेकिन -sizeWithFont:constrainedToSize:
पर कॉल करना बहुत धीमा है जब आप इसे सैकड़ों आइटम अनुक्रमिक रूप से कर रहे हैं, और मुझे लगता है कि यह बेहतर किया जा सकता है।
तो इसके लिए काम करने के लिए, मुझे कोड के दो हिस्सों को बनाए रखना था - एक जो सेल ऊंचाई की गणना करेगा, और वह समय जो आने पर कोशिकाओं को वास्तव में आकर्षित करेगा।
यदि मॉडल आइटम के बारे में कुछ भी बदल गया है, तो मुझे कोड के इन दोनों हिस्सों को अपडेट करना पड़ा था, और अब और फिर भी वे पूरी तरह से मेल नहीं खाते हैं, कभी-कभी परिणामस्वरूप टेबल कोशिकाएं जो किसी दिए गए के लिए बहुत छोटी होती हैं वस्तु, या बहुत बड़ी।
मेरे प्रस्तावित समाधान:
तो मैं सेल ऊंचाई precalculating को खत्म करना चाहते हैं। ए) क्योंकि यह एमवीसी प्रतिमान और बी तोड़ता है) क्योंकि यह धीमा है।
तो मेरा सेल स्वयं खींचता है, और नतीजतन, सही सेल ऊंचाई के साथ समाप्त होता है। मेरी समस्या यह है कि मेरे पास तालिका को खींचने से पहले सेल की ऊंचाई को देखने का कोई तरीका नहीं है - जिसके द्वारा बहुत देर हो चुकी है।
मैं -tableView:heightForRowAtIndexPath:
के भीतर से -cellForRowAtIndexPath:
बुला की कोशिश की लेकिन बाद पहली कुछ बिंदु पर दूसरा, और इसके विपरीत कॉल यह एक अनंत लूप में अटक जाता है, (कम से कम यह मैं क्या देखा है जब मैं इसे करने की कोशिश है)।
तो यह विकल्प प्रश्न से बाहर है।
यदि मैं पंक्ति प्रतिनिधि विधि के लिए ऊंचाई में एक आकार निर्दिष्ट नहीं करता हूं, तो तालिका दृश्य खराब हो जाता है। कोशिकाएं सही ऊंचाई हैं, लेकिन उनकी एक्स स्थिति निश्चित ऊंचाई की कोशिकाओं की है।
Messed Table Cells http://jamsoftonline.com/images/messed_table_cells.png
सूचना कैसे नीचे सेल सही आकार है - यह सिर्फ पिछले सेल अतिव्यापी है, और पिछले सेल अपने पिछले ओवरलैप करता है, और इतने पर और बहुत आगे है।
इस विधि का उपयोग करते हुए, स्क्रॉल करते समय कुछ आर्टिफैक्टिंग होती है जो मुझे लगता है कि कोशिकाओं के लिए पुन: उपयोग पहचानकर्ता से संबंधित हो सकता है।
तो यहां कोई भी सहायता की सराहना की जाएगी।
मैं एक ही समस्या है। -cellForRowAtIndexPath: कॉल -tableView: heightForRowAtIndexPath: अगर बाद में कहा जाता है (ध्यान दें कि बाद वाले को कॉल नहीं किया जाता है तो बाद में कॉल नहीं किया जाता है) मुझे पागल बनाते हैं। – an0