मेरे पास एक कस्टम UITableViewCell
सबक्लास है जिसमें इंटरफ़ेस बिल्डर में ऑटोलायआउट बाधाएं लागू होती हैं। सेल में UITextField
सहित कई दृश्य शामिल हैं।हटाए गए UITableViewCell में स्क्रॉल (ऑटोलायआउट का उपयोग करके) तक गलत लेआउट है
प्रासंगिकता से, UITextField
का आकार इस तरह से बाधित है कि इसके और अगले दृश्य के बीच डिफ़ॉल्ट क्षैतिज अंतर है।
सेल की तरह instantiated है इस प्रकार है:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ProgressCell";
ProgressCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath]
cell.textField.text = @"Some string that is different for each cell";
return cell;
}
जब सेल पहले प्रकट होता है, UITextField
लगने सही फ्रेम, और इसके सही करने के लिए UIView
के पीछे दिखाई देता है। हालांकि, जब मैं स्क्रीन से सेल को स्क्रॉल करता हूं, रोकता हूं, और फिर वापस स्क्रॉल करता हूं, तो टेक्स्ट सही ढंग से छोटा कर दिया जाता है।
एक उदाहरण नीचे दिखाया गया है (दूसरे संपादन पर)।
मैंने और [cell setNeedsDisplay]
को cellForRowAtIndexPath
में सेल के साथ कॉल करने का प्रयास किया है, साथ ही देरी के बाद उन्हें निष्पादित किया है। न तो प्रभावी है।
स्क्रीन को स्क्रॉल करना क्या है जिससे सेल सही तरीके से दिखाई दे रहा है, और मैं या तो इसे कैसे दोहरा सकता हूं या अंतर्निहित समस्या को ठीक कर सकता हूं?
संपादित करें:
आदेश सेल फिर से लोड करने में कॉलिंग
[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
, लेआउट सही ढंग से पहली बार प्रकट करने के लिए पैदा करने के लिए प्रकट होता है।
हालांकि, अब यह स्क्रॉल पर टूटता (कभी कभी) (यानी, जब वापस ऊपर स्क्रॉल, लेआउट की कमी अब सही ढंग से लागू नहीं कर रहे हैं)।
[cell setNeedsLayout]
cellForRowAtIndexPath
पर कॉल करना इस समस्या को ठीक नहीं करता है।
EDIT2:
शीर्ष सेल से पता चला here, सही ढंग से (नीचे सेल करता है) दिखाई दिया जब तक मैं स्क्रीन नीचे स्क्रॉल के रूप में। गायब होने के बाद से।
यह पहली संपादन के रूप में समस्या को दर्शाता है - यह दूसरा प्रतिपादन है कि समस्या (? मुझे लगता है कि यह सेल पुन: उपयोग के साथ कुछ हो सकता है बनाता है)
आप कंसोल में कमी के बारे में कोई चेतावनी हो रही है पर घटना
true
क्या आप कुछ स्क्रीनशॉट शामिल कर सकते हैं? – jrturton
@rdelmar मैंने अपनी Autolayout श्रेणी (क्या हमने पहले उस पर चर्चा नहीं की थी?) यदि आप रुचि रखते हैं: http://commandshift.co.uk/blog/2013/02/20/creating-individual-layout-constraints/ – jrturton