2008-11-21 19 views
16

मैं एक UITableView की स्क्रॉल स्थिति को पूरी तरह से रीसेट करना चाहता हूं, ताकि जब भी मैं इसे खोलूं, यह शीर्ष-सबसे अधिक आइटम प्रदर्शित कर रहा है। दूसरे शब्दों में, मैं प्रत्येक बार खोले जाने पर शीर्ष पर तालिका दृश्य को स्क्रॉल करना चाहता हूं।UITableView की स्क्रॉल स्थिति को रीसेट कैसे करें?

मैं कोड का निम्न भाग उपयोग करने की कोशिश, लेकिन यह है कि मैं प्रलेखन गलत समझा दिखता है:

- (void)viewWillAppear:(BOOL)animated { 
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO]; 
} 

यह गलत दृष्टिकोण यहाँ है?

उत्तर

33

अगस्त को UITableView- विशिष्ट विधि मिली। एक अन्य तरीका यह करने के लिए है:

[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 

इस विधि UIScrollView, UITableView के लिए माता-पिता कक्षा में परिभाषित किया गया है। उपर्युक्त उदाहरण यह कहता है कि यह 0x1 बॉक्स पर 0,0 - शीर्ष बाएं कोने में दूसरे शब्दों में स्क्रॉल करने के लिए कहता है।

+1

यह वास्तव में ऐसा करने का एक सुंदर साफ तरीका है क्योंकि आपको चिंता करने की आवश्यकता नहीं है कि आपकी तालिका खाली है या नहीं। जब मुझे प्रदर्शित करने के लिए कोई रिकॉर्ड नहीं था तो मुझे एनएसआईएनएक्सएक्सपाथ (0,0) में एक बुरा क्रैश था। –

+0

धन्यवाद !!! महान टिप! – quantum

6

जिस विधि का आप स्क्रॉल का उपयोग कर रहे हैं (जैसा विधि विधि का तात्पर्य है) निकटतम चयनित पंक्ति। कई मामलों में, यह शीर्ष पंक्ति नहीं होगी। या तो

scrollToRowAtIndexPath:atScrollPosition:animated: 

या

selectRowAtIndexPath:animated:scrollPosition: 

जहां पंक्ति आप के लिए स्क्रॉल करना चाहते हैं के सूचकांक पथ का उपयोग इसके बजाय, आप उपयोग करना चाहते हैं। दूसरी विधि वास्तव में एक पंक्ति का चयन करती है, पहली विधि बस इसे स्क्रॉल करती है।

+0

ये एनीमेशन अनुक्रम की शुरुआत के दौरान आईओएस 4.0 के साथ मेरे लिए काम नहीं किया। मुझे scrollRectToVisible का उपयोग करना पड़ा: एनिमेटेड: – chrish

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