2011-09-18 17 views
7

मुझे अपने टेबल व्यू में कोई समस्या है। इसके ऊपर प्रस्तुत एक मोडल व्यू कंट्रोलर को खारिज करते समय, यह हमेशा शीर्ष पर स्क्रॉल करता है। मैंने केवीओ का उपयोग करके contentOffset में परिवर्तनों को देखने का प्रयास किया है, लेकिन जो मेरा विचार गड़बड़ कर रहा है वह उसके पीछे है।dismissModalViewControllerAnimated रीसेट सामग्री सामग्री

UITableViewController से, उपयोगकर्ता मॉडल संवाद में अपने कार्य खत्म जब, self.tableView.contentOffset है, मैं फोन:

[self dismissModalViewControllerAnimated:YES] 

बाद में, जब viewWillAppear:(BOOL)animated कहा जाता है, self.tableView.contentOffset पहले से ही 0,0 को तैयार है।

क्या ऐसा होने वाला माना जाता है? मैं मोडल व्यू पेश करने से पहले स्क्रॉल स्थिति को याद करके इस मुद्दे के आसपास काम करने में सक्षम हूं और इसे मोडल व्यू को खारिज करने के बाद इसे विल्लएपियर में वापस बहाल कर सकता हूं। लेकिन यह गलत लगता है। क्या मैं कुछ भूल रहा हूँ?

मुझे Dismiss modal view changes underlying UIScrollView में वर्णित समान समस्या मिली है।

+1

क्या आप देख सकते हैं कि 'viewDidLoad:' को मोडल व्यू को खारिज करने के बाद बुलाया जाता है? (मैंने देखा कि यह स्मृति चेतावनी के दौरान हो सकता है, कुछ घटकों को अनलोड किया जाता है भले ही दृश्य धक्का दिया जाता है)। –

+0

babbidi का एक अच्छा बिंदु है, स्मृति दृश्य चेतावनी की स्थिति में, मोडल दृश्य शीर्ष पर होने पर आपका दृश्य अनलोड किया जा सकता है। यदि आप अपनी तालिका दृश्य में अपनी तालिका दृश्य प्रारंभ करते हैं, और मोडल व्यू के दौरान एक स्मृति चेतावनी है, तो जब आप मोडल व्यू को खारिज करते हैं तो तालिका दृश्य को फिर से शुरू किया जा सकता है। NSLogs को देखने में रखो DidUnload और देखेंDidLoad। – MattyG

+0

मैं पहले से ही 'viewDidUnload' की निगरानी कर रहा था - और नहीं, दृश्य अनलोड नहीं किया गया है। – Palimondo

उत्तर

5

ऐसा लगता है कि यह UITableViewController का डिफ़ॉल्ट व्यवहार है। मैंने इसे बहुत ही सरल ऐप में परीक्षण किया और यह ठीक उसी तरह काम किया जैसा आपने कहा था। यदि आपको यह पसंद नहीं है, तो इसके बजाय UIViewController का उपयोग करें।

+0

मेरे संदेह की पुष्टि करने के लिए धन्यवाद। मैं खुद से सवाल करना शुरू कर रहा था ;-) – Palimondo

+0

@Split मेरे पास UIViewController है लेकिन अभी भी यह समस्या पुन: उत्पन्न करने योग्य है – iOSdev

5

यहां बताया गया है कि मैं इस समस्या के आसपास कैसे काम करता हूं, ताकि तालिका दृश्य मूल स्क्रॉल स्थिति को बनाए रख सके। UITableViewController की मेरी उपवर्ग में मैं जोड़ लिया है:

@property (assign) CGPoint lastScrollPosition; 

फिर कार्यान्वयन में, मैं निम्नलिखित अधिरोहित है

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.contentOffset = self.lastScrollPosition; 
} 

- (void)dismissModalViewControllerAnimated:(BOOL)animated 
{ 
    self.lastScrollPosition = self.tableView.contentOffset; 
    [super dismissModalViewControllerAnimated:animated]; 
} 

आप अपनी तालिका शुरू में गैर शून्य स्थिति के लिए स्क्रॉल प्रकट करना चाहते हैं, के रूप में मैंने किया, viewDidLoad में lastScrollPosition आरंभ करना न भूलें।

+0

पोस्ट के लिए धन्यवाद Palimondo। आपने मेरे लिए एक सही समस्या हल की है! –

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