मेरे पास एक कस्टम टेबल व्यू सेल है जो ऑटो लेआउट का उपयोग करता है और एक एक्सेसरीज़ व्यूअर को एक्सेसरी व्यू के रूप में उपयोग करता है। स्क्रीन पर कोशिकाओं की कोशिका के आकार पूरी तरह से गलत हैं जब पहली दिखाया गया है:ऑटो लेआउट और एक्सेसरी व्यू के साथ कस्टम UITableViewCell
आप देख सकते हैं सेल अंतरिक्ष के एक मूल्य 1.5 स्क्रीन के बारे में ले जा रहा है के रूप में:
लेकिन अगर मैं बारी बारी से उपकरण और वापस बारी बारी से यह ठीक लग रहा है:
आप यहाँ देख सकते हैं, मैं कुछ भी नहीं किया है जटिल:
मैं एक बहुत ही गैर आदर्श वैकल्पिक हल करने के लिए है जो है:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView reloadData];
}
लेकिन वह स्पष्ट रूप से एक 'फ्लैश' जब आप पहली बार स्क्रीन देखने का कारण बनता है। एक और जटिल परिदृश्य में फ्लैश कहीं अधिक स्पष्ट है।
मैं एक वैकल्पिक हल है, लेकिन यह एक ऑटो लेआउट अपवाद का कारण बनता है:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
BasicCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BasicCell" forIndexPath:indexPath];
cell.basicLabel.text = @"Hello this is just some text that should get the label to go over multiple lines";
[cell.basicLabel layoutIfNeeded];
return cell;
}
अपवाद:
कम से कम इस विधि मुझे यूआई चमकती नहीं देता है।
यदि मैं एक्सेसरी व्यू को हटा देता हूं तो यह वास्तव में पूरी तरह से ठीक काम करता है।
अद्यतन: मैं GitHub के लिए एक नमूना परियोजना जोड़ दिया है: https://github.com/fwaddle/TableCellAccessoryTest
अद्यतन # 2: एक और काम से बाहर कर देता है चारों ओर इस बग कोड में सेल लेआउट है। मैंने बस कोड में एक ही चीज़ करने की कोशिश की और उसने चेतावनी फेंक दी और ठीक काम किया। एक आईबी बग की तरह लग रहा है।
कोई भी विचार इस मुद्दे के आसपास कैसे काम करना है? धन्यवाद।
अपनी बाधाओं को अपने सेल के अंदर ठीक से सेट करें, जो कभी-कभी मुश्किल हो सकता है, फिर 'तालिका पंक्ति' गुण को अपने तालिका दृश्य पर 'UITableViewAutomaticDimension' पर सेट करें। यह भी एक अपवाद नहीं है, यह गलत कॉन्फ़िगरेशन के लिए एक चेतावनी है। एक बेजोड़ अपवाद आपके आवेदन को समाप्त कर देगा। – Michael
हाय @ निकिता, बाधाएं ठीक से सेट की गई हैं और मैंने पंक्ति को ठीक से सेट किया है: - (शून्य) viewDidLoad { [सुपर व्यूडिडलोड]; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 45; } लेकिन मैं इसके बारे में अपना मुद्दा अपवाद नहीं ले रहा हूं। – Mof
मुझे लगता है कि यह आपकी बाधाओं के साथ एक मुद्दा है। अपने निर्माण को साफ करें और लेआउट में उपयोग नहीं किए जा रहे बाधाओं को हटाएं, फिर इसे बनाएं और चलाएं। – Michael