2011-08-23 10 views
9

कुछ बुनियादी होना चाहिए जो मैं यहां याद कर रहा हूं। मेरे पास एक UIScrollView खुला है, जिसे ग्राहक UIScrollViewController (जिसे DataController कहा जाता है) द्वारा नियंत्रित किया जाता है। कुछ ही समय में एक निश्चित बिंदु पर, उपयोगकर्ता से इनपुट की जरूरत है, तो मैं DataController से एक मॉडल UIViewController खोलें:अंतर्निहित मोडल व्यू परिवर्तनों को खारिज करें UIScrollView

ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil]; 
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
viewController.theDelegate = self; 
[self presentModalViewController:viewController animated:YES]; 

एक बार जब उपयोगकर्ता मोडल दृश्य के साथ तैयार है, इसे फिर से खारिज कर दिया है। यह डेटाकंट्रोलर से भी होता है:

[self dismissModalViewControllerAnimated:YES]; 

यह सब ठीक काम करता है। लेकिन जब मोडल व्यू चला जाता है, तो यह पता चला है कि अंतर्निहित UIScrollView पूर्ण स्क्रीन में बदल दिया गया है, और स्थिति (0,0) पर स्क्रॉल किया गया है। यह मामला एक साधारण मोडल व्यू के साथ भी है जो कुछ और नहीं करता है लेकिन इसे खारिज कर दिया जाता है। जाहिर है, मैं चाहता हूं कि UIScrollView समान स्थिति और आकार में बने रहें क्योंकि यह मोडल व्यू आने से पहले था।

कोई विचार क्या मैं गलत कर रहा हूं?

मैं जब UIScrollView फ्रेम सेट कर दिया जाता स्टैक ट्रेस (setFrame में एक को तोड़ने-बिंदु के माध्यम से: एक कस्टम UIScrollView की) जाँच की, और ऐसा लगता है कि यह से कहा जाता है:

-[UITransitionView transition:fromView:toView:] 

जो के माध्यम से कहा जाता है , dismalModalViewControllerAnimated कॉल के माध्यम से।

+0

मुझे नहीं पता कि यह क्यों हो रहा है, लेकिन आप हमेशा UIScrollView सामग्री को स्टोर कर सकते हैं ऑफसेट और मोडल गायब होने के बाद रीसेट कर सकते हैं। – NWCoder

+0

कृपया अपने कुछ कोड को viewwillappear से दिखाएं ... –

+0

धन्यवाद। मैं अब काम के आसपास के रूप में करता हूं। मैं फ्रेम और सामग्री को सहेजता हूं UIScrollView की ऑफसेट, और इसे खारिज कॉल के तुरंत बाद रीसेट करें। ऐसा लगता है, लेकिन यह एक हैक की तरह लगता है। मैं निश्चित रूप से जानना चाहता हूं कि इसे संभालने का सामान्य तरीका क्या है। – fishinear

उत्तर

1
-[UITransitionView transition:fromView:toView:] 

मोडल से आपके दृश्य में संक्रमण के लिए पूरी तरह से सामान्य है। यह एनीमेशन इत्यादि है, अगर आपको लगता है कि इससे कोई फर्क पड़ता है तो आपको एनीमेशन के साथ मोडल करने का प्रयास करें।

अपने viewWillAppear, WillDisappear, DidAppear... पर एक नजर डालें यहां तक ​​कि Load और Unload अगर उचित है, हालांकि संभावना नहीं उन मोडल में कुछ भी नहीं के साथ अपने तुच्छ परीक्षण के लिए कहा जाता है। उन तरीकों में कुछ लॉगिंग रखने का प्रयास करें जिन्हें देखने के लिए कहा जाता है।

क्या आप कह रहे हैं कि उन तरीकों में कोई कस्टम कोड नहीं है, या आपका नियंत्रक उन्हें ओवरराइड नहीं करता है? एक फर्क पड़ सकता है।

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