2009-06-04 18 views
8

मेरे पास एक कस्टम UITableViewCell के साथ UITableView है। CellForRowAtIndexPath में, मैं प्रत्येक सेल में एक लेबल को एक फ़ॉन्ट निर्दिष्ट करता हूं, क्योंकि उपयोगकर्ता किसी भी समय फ़ॉन्ट आकार बदल सकता है। फ़ॉन्ट आकार बदलने के लिए, उपयोगकर्ता टेबलव्यू के नीचे एक बटन पर क्लिक करता है, जो सेटिंग्स के साथ एक और दृश्य को हटा देता है। एक बार जब उन्होंने फ़ॉन्ट आकार चुना है और क्लिक किया है, तो वह दृश्य दूर हो जाता है और तालिकादृश्य फिर से प्रदर्शित होता है। मैं प्रति दृश्य क्षेत्र में एक सेल प्रदर्शित करता हूं। इसलिए जब तक वह अगले सेल तक स्क्रॉल नहीं करता तब तक उपयोगकर्ता फ़ॉन्ट परिवर्तन नहीं देखता है। वर्तमान सेल वह है जिसे मैं अपडेट करना चाहता हूं।UITableViewCell को रीफ्रेश कैसे करें?

मैंने सेटिंग्स स्क्रीन से पुनः लोडडेटा को आजमाया है लेकिन यह काम नहीं करता है। टेबलव्यू एक UITableViewController है लेकिन दृश्य स्क्रीन चला जाने के बाद ViewWillAppear कभी नहीं आग लगती है। मैंने कस्टम सेल को टेबलव्यू की एक संपत्ति बनाने का प्रयास किया है, इसलिए इसे सेटिंग दृश्य से एक्सेस किया जा सकता है, फिर setNeedsDisplay और setNeedsLayout कहा जाता है। वे या तो काम नहीं किया। कोई सुझाव?

उत्तर

5

उन कोशिकाओं के लिए जो आपको अभी भी लेबल के फ़ॉन्ट को अपडेट करना है। आपको अपने कस्टम सेल में कस्टम लेबल तक पहुंचने का एक तरीका चाहिए। कैसे आप अपनी सेटिंग्स स्क्रीन प्रदर्शित करते

for (MyCell* cell in [theTableView visibleCells]) { 
    [cell.myLabel.font = newFont]; 
} 
+0

मैंने सेटिंग कोड में अपना कोड आजमाया लेकिन तालिकादृश्य प्रदर्शित होने के बाद भी वर्तमान सेल पर कोई बदलाव नहीं आया। यदि मैं करता हूं तो सेटिंग्स दृश्य से तालिकादृश्य पर कॉल रीलोडडाटा कॉल करता है, यह ठीक काम करता है। हालांकि, ऐसा करने के लिए यह एक बहुत महंगा, अत्यधिक तरीका है। – 4thSpace

+0

मैंने समस्या को बेहतर समझने के बाद अपना जवाब संपादित किया। –

+0

बहुत बहुत धन्यवाद! – Luda

0

मैं उत्सुक हूँ,:

फ़ॉन्ट आकार बदलने के बाद की तरह कुछ करते हैं? लौटने पर viewWillAppear सामान्य परिस्थितियों में बुलाया जाना चाहिए। आप

[self presentModelViewController:animated:] 

या

[self.navigationController pushViewController:animated:] 

ये चाहिए दोनों काम का उपयोग करें। यदि, दूसरी तरफ, आप विंडो दृश्य या किसी दृश्य के सबव्यूव के रूप में सेटिंग दृश्य जोड़ रहे हैं, तो इसे हटाने के लिए तालिका दृश्य नियंत्रक पर viewWillAppear पर कॉल नहीं किया जाएगा।

तो यदि आप उन दो विधियों में से किसी एक का उपयोग नहीं कर रहे हैं, तो करें। यदि आप पहले से हैं, तो सेल का फ़ॉन्ट सेट करना सेल को प्राप्त करने और उसके फ़ॉन्ट को सेट करने के समान ही सरल है। आप एक मानक UITableViewCell उपयोग कर रहे हैं, कि

cell.font = newFont; 

साथ आप एक कस्टम उपवर्ग उपयोग कर रहे हैं किया है, मैं स्पष्ट रूप से आपको बता नहीं सकता यह वास्तव में कैसे काम करने की जरूरत है, लेकिन जिस तरह से निकोलाई यह है सही है ।

+0

मैं presentModalViewController का उपयोग कर रहा हूँ। नीचे समाधान ठीक काम किया। – 4thSpace

12

अपने कस्टम UITableViewCell में, [self setNeedsLayout]; पर कॉल करें और इसे अगले लूप पर अपने सेल को पेंट करना चाहिए। मैं इसे एसिंक्रोनस छवि लोडिंग के लिए उपयोग करता हूं क्योंकि मैं वेब से छवि खींच रहा हूं और यह सूजन काम करता है।

+0

यह मेरे लिए धन्यवाद, धन्यवाद। मेरे पास कुछ केवीओ चल रहा है जहां मैं वास्तव में केवल एक सेल को फिर से लोड करना पसंद करूंगा, इसलिए यह अच्छा काम करता है। – Sam

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