2014-10-27 9 views
8

मैं वर्तमान में आईओएस 8 पर एक ऐप अपडेट कर रहा हूं, और अपनी सेल ऊंचाई गणनाओं को बदल रहा हूं। मेरे पास कस्टम कोशिकाओं के समूह के साथ एक टेबलव्यू है। चयनित होने पर प्रत्येक सेल नेविगेशन नियंत्रक पर एक नया दृश्य प्रस्तुत/धक्का देगा। जब तालिका कक्ष इन कोशिकाओं के साथ पॉप्युलेट किया जाता है, और उपयोगकर्ता तालिका के निचले भाग के पास एक का चयन करता है, तो नया दृश्य प्रस्तुत होने से पहले टेबलव्यू ऊपर दाईं ओर कूदता है। यह उपयोगकर्ता के लिए बहुत विचलित है।आईओएस 8 ऑटो सेल ऊंचाई - didSelectRowAtIndexPath शीर्ष पर जाने के लिए UItableview का कारण बनता है

self.tableView.estimatedRowHeight = 60.0; 
self.tableView.rowHeight = UITableViewAutomaticDimension; 

यहाँ जब एक सेल का चयन किया जाता

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIViewController *selectedViewController = [[UIStoryboard storyboardWithName:@"Trip" bundle:nil] instantiateViewControllerWithIdentifier:@"TripDetail"]; 
    DetailViewController *destViewController = (id)selectedViewController; 
    [destViewController setData:self.dataStore]; 

    [self.navigationController pushViewController:selectedViewController animated:YES]; 
} 

क्या किसी को पता है कि क्यों यह हो रहा है के लिए कोड है: मैं स्वयं iOS 8 यहाँ में शुरू की कोशिकाओं का आकार (viewDidLoad में) का उपयोग कोशिश कर रहा हूँ? और मैं इसे कैसे रोक सकता हूं?

उत्तर

5

यह एक ज्ञात मुद्दा है। तालिका दृश्य पंक्तियों के लिए अनुमानित ऊंचाई प्राप्त करने के लिए अपने प्रतिनिधि को बुला रहा है, जिससे तालिका स्क्रॉल हो रही है।

आप यह देखने के लिए इंतजार कर सकते हैं कि यह अगले अपडेट में तय है या tableView:estimatedHeightForRowAtIndexPath: (अब के लिए एक कार्यवाही के रूप में) लागू करें और एक कैश की ऊंचाई लौटाएं। चूंकि अनुमान वास्तविक ऊंचाई होगी, इसलिए तालिका कूद नहीं जाएगी।

+1

ऊंचाई कैश कैसे करें? –

+0

यह वास्तव में काम नहीं करेगा क्योंकि यह "tableView.rowHeight = UITableViewAutomaticDimension" के साथ समान है और यह अधिक सुविधाजनक – nferocious76

+0

@nfer है, भले ही ऊंचाई निर्धारित की गई हो, बग वास्तविक ऊंचाई की बजाय अनुमानित ऊंचाई पर वापस आ जाता है । इसलिए, अनुमान के मुताबिक वास्तविक ऊंचाई, अब के लिए एक कामकाज के रूप में, यह मेज को कूदने से रोकता है। इस मुद्दे की प्रकृति के कारण, यह वास्तव में काम करता है, भले ही यह वास्तव में तार्किक नहीं है। –

1

यह तब हो की जब तालिका प्रतिनिधि उपयोग किया गया था "didSelectRowAtIndexPath:" क्योंकि प्रतिनिधि विधि "numbersOfSectionsInTableView" & & "numbersOfRowsInSection" कहा जाता हो जाएगा। यह टेबल को पुनः लोड करने की तरह है।

आप इस विधि "heightForRowAtIndexPath:" के साथ उस कूदते राज्य को ठीक कर सकते हैं, हालांकि आपको अपने ऑटो आकार का उपेक्षा करना होगा।

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