2013-09-24 18 views
5

का उपयोग करने जा iOS 6 में के बाद स्क्रॉल नहीं, मैं एक UITableView मेरे एप्लिकेशन में QuickDialog उपयोग कर बनाई गई थी। यह सामान्य रूप से स्क्रॉल किया गया। जब मैं आईओएस 7 पर स्विच करता हूं, वही UITableView ठीक से स्क्रॉल नहीं करता है। मैं नीचे खींच सकता हूं (स्क्रोलर संपीड़ित) लेकिन जब मैं रिलीज करता हूं, तो यह शीर्ष पर वापस आ जाता है। मैं समस्या का प्रयास करने और निदान करने के लिए viewDidAppear के साथ खेल रहा हूं। नीचे कोड ब्लॉक देखें।UITableView iOS 7

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height); 
    [self.quickDialogTableView reloadData]; 
    NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height); 
    [self.quickDialogTableView layoutIfNeeded]; 
    NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height); 
} 

iOS 7 में इस ब्लॉक के उत्पादन

Content height: 0.000000 
Content height: 836.000000 
Content height: 0.000000 

इस बीच, IOS 6 (सिम्युलेटर) में इस ब्लॉक के उत्पादन में किया जाता है

Content height: 836.000000 
Content height: 836.000000 
Content height: 836.000000 

भी कोशिश करते हैं और निदान करने के लिए है समस्या, मैंने एक बटन स्थापित किया जो [self.quickDialogTableView reloadData] को ट्रिगर करेगा। जब भी वह बटन धक्का दिया जाता है, तो स्क्रॉलिंग व्यवहार सामान्य रूप से कार्य करना शुरू कर देता है। फिर जब मैं दृश्य छोड़ देता हूं और वापस आ जाता हूं, तो स्क्रॉलिंग फिर से विफल हो जाती है (जब तक बटन धक्का नहीं जाता)। स्पष्ट होने के लिए, मैंने viewWillAppear में reloadData डालने का प्रयास किया है (यानी, उपरोक्त कोड ब्लॉक में अंतिम दो पंक्तियां हटाएं) और यह स्क्रॉलिंग को सही नहीं करता है।

मैं जहाँ मैं इस समस्या को ठीक करने के लिए लग सकता है के रूप में सुराग के लिए देख रहा हूँ। किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।

उत्तर

7

ठीक है, तो मैं बाहर समस्या के स्रोत समझ नहीं सकता है, लेकिन मैं एक समाधान है कि मुझे आशा है कि किसी और में मदद करता है मिला। या कम से कम, शायद किसी और को यह इंगित करने में मदद करता है कि वास्तव में क्या गलत है।

मैं एक संपत्ति trueContentSize मैं कहाँ की दुकान क्या सही आकार है बुलाया बनाया।

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.quickDialogTableView reloadData]; // Calculates correct contentSize 
    self.trueContentSize = self.quickDialogTableView.contentSize; 
} 

फिर, -viewDidLayoutSubviews में मैं contentSize मैन्युअल ठीक करें।

-(void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    self.quickDialogTableView.contentSize = self.trueContentSize; 
} 
+0

ऐसा नहीं लगता कि यह काम करेगा, और यकीन है कि, यह मेरे लिए काम नहीं करता है। मुझे एक ही समस्या का सामना करना पड़ रहा है, हालांकि, आपके समाधान में आप बस QuickDialogTableView से सामग्री को आकार में देख रहे हैं DidAppear: और उसके बाद इसे सामग्री पर पुन: असाइन करना QuickDialogTableView का आकार फिर से देखें DidLayoutSubviews ... मैं यह समझने में असफल रहा कि यह कैसे ठीक करेगा समस्या। – Jamornh

+1

@Jamornh सहमत। यह कोई समझ नहीं आता है। हालांकि, अगर मैं 'self.quickDialogTableView.contentSize = self.trueContentSize' से पहले '-viewDidLayoutSubviews' में 'self.quickDialogTableView.contentSize'' लॉग करता हूं, तो यह शून्य हो जाता है। तो '-viewDidAppear' और' viewDidLayoutSubviews' के बीच कुछ हो रहा है जो 'ContentSize' को शून्य पर सेट कर रहा है। मुझे नहीं पता कि क्या। मेरी हैक सुनने के लिए खेद है कि आपके लिए काम नहीं किया है। क्या आपने यह सुनिश्चित करने के लिए जांच की है कि आपकी कस्टम 'self.trueContentSize' प्रॉपर्टी इसका उपयोग करने से पहले आपके अपेक्षित आकार को वापस कर रही थी? –

+0

मैंने तालिका दृश्य को मैन्युअल रूप से रीसेट करके इसे ठीक करने में कामयाब रहा है, फिर तालिका के फ्रेम को रीसेट कर रहा है सामग्री को फिट करने के लिए देखें तालिका का आकार दृश्य अपने फ्रेम से बड़ा है। स्पष्ट रूप से स्क्रॉलिंग काम नहीं कर रही थी क्योंकि तालिका दृश्य का फ्रेम किसी कारण से सामग्री से बड़ा है। आपके प्रतिक्रिया के लिए धन्येवाद! – Jamornh

0

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

1

यह मेरा वर्तमान अस्थायी तय है। कोई भी वास्तविक फिक्स को समझता है?

@interface UITableView (Extension) 
@end 

@implementation UITableView (Extension) 

- (void)setContentSize:(CGSize)contentSize { 
    if (contentSize.height != 0) { 
    [super setContentSize:contentSize]; 
    NSLog(@"set content height %f", contentSize.height); 
    } else { 
    NSLog(@"set content size zero"); 
    } 
} 

@end 
3

बस सोचा था कि मैं अपने दो सेंट यहाँ में फेंक सकती है ..

एक ही समस्या मेरे लिए हो रहा था। टेबल पहले ठीक लोड करता है, लेकिन एक अलग स्क्रीन पर नेविगेट करता है, वापस आ जाता है, और तालिका दृश्य का contentSize0,0 और अनसुलझा है। फॉस्टो का कामकाज भरोसेमंद काम नहीं कर रहा था, या तो।

-viewWillLayoutSubviews में topLayoutGuide को संदर्भित करने का कार्य केवल मेरे लिए मामला बन गया था। ऐसा करने से उपरोक्त सभी लक्षणों का कारण बनता है। एक नई परियोजना में इसे आजमाएं: एक टैब नियंत्रक अंदर

  1. सेटअप एक तालिका दृश्य नियंत्रक।
  2. इसे केवल स्थिर सामग्री के साथ 30 पंक्तियां दें।
  3. भागो और आप स्क्रॉल कर सकते हैं। टैब स्विच करें, फिर वापस, और आप स्क्रॉल कर सकते हैं।
  4. NSLog(@"%@", self.topLayoutGuide);-viewWillLayoutSubviews
  5. फिर से चलाएं, आप स्क्रॉल कर सकते हैं, लेकिन टैब स्विच कर सकते हैं, और स्क्रॉल नहीं कर सकते हैं।

अजीब। आईओएस बग की तरह लगता है, या आपको उस विधि में topLayoutGuide का संदर्भ नहीं देना चाहिए। उस संपत्ति के किसी भी संदर्भ को हटाने से समस्या ठीक हो जाएगी।

संपादित करें: इस साल के रूप में, एप्पल एक रडार रिपोर्ट मैं इस एक iOS बग है बनाया के माध्यम से पुष्टि की। topLayoutGuide को हल नहीं होने तक संदर्भित न करें (जब भी वह होगा, हे)। :)

+0

वही समस्या! बस शीर्ष पर क्लिक करें ग्वाइड कॉल किए गए टेबल स्क्रॉलिंग ठीक काम कर रहे हैं ... – Cemen

+0

एक वर्कअराउंड मिला: सादे कस्टम 'UIViewController' के साथ' UITableViewController' को बदलें। यहां: http://stackoverflow.com/questions/19595479/calling-toplayoutguide-breaks-scrolling-altogether – Cemen

0

मुझे एक समान समस्या थी। मेरा मुद्दा यह था कि स्टोरीबोर्ड में तालिका दृश्य के लिए मेरे पास एक स्पष्ट ऊंचाई सेट था। ऊपर/नीचे दिए गए विचारों को दूरी निर्धारित करके ऑटो लेआउट का उपयोग करने के लिए मेरे टेबल व्यू को अपडेट करना यह मेरे लिए काम करता है।

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