के वर्तमान पिन किए गए अनुभाग को प्राप्त करें UITableView में शीर्ष अनुभाग के शीर्षक या अनुक्रमणिका को पाने का सबसे सटीक तरीका क्या है? मेरा मतलब इंडेक्स 0 पर सेक्शन का नहीं है, लेकिन अनुभाग हेडर जो स्क्रॉल करते समय शीर्ष पर पिन किया गया है।UITableView
उत्तर
तुम इतनी तरह स्क्रीन के शीर्ष पर अनुभाग प्राप्त कर सकते हैं:
NSUInteger sectionNumber = [[tableView indexPathForCell:[[tableView visibleCells] objectAtIndex:0]] section];
लेकिन, इस विधि क्योंकि यह मिल जाएगा आप के लिए इष्टतम नहीं हो सकता है नंबर होगा अजीब जब यह संक्रमण काल में है दो शीर्षकों के बीच। जब तक आपको संक्रमण के दौरान अनुभाग को जानने की आवश्यकता नहीं है, तब तक आपको ठीक होना चाहिए। मुझे उम्मीद है कि यह आपकी तलाश है,
क्या आपकी कक्षा UIScrollViewDelegate को लागू करती है, और निम्न कार्यों को लागू करती है। यह सुनिश्चित करेगा कि आप केवल अनुभाग को पुनर्प्राप्त करेंगे जब तालिकादृश्य स्क्रॉलिंग रोकता है।
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
{
// retrieve section here
section = [[[self.tableview visibleCells] objectAtIndex:0] section];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// retrieve section here
section = [[[self.tableview visibleCells] objectAtIndex:0] section];
}
तक पहुंचने से पहले '[tableView visibleCells] .count> 0' को जांचना होगा, मुझे लगता है कि यह इस तरह से कर रहा है, यह संक्रमण में होने पर खंडों को उलझन में डाल देता है? – Bot
यह किसी कारण से मेरे कस्टम सेल के साथ त्रुटियों को फेंकता है ... '- [नियुक्ति कस्टम कस्टम अनुभाग]: अपरिचित चयनकर्ता उदाहरण 0x89af850' पर भेजा गया है। मैं जो कुछ भी कर रहा हूं वह आपके द्वारा प्रदान किए गए उपरोक्त कोड में अनुभाग को एनएसएलॉगिंग कर रहा है। – Bot
यह पुराना है लेकिन सभी प्रकार के गलत हैं क्योंकि 'self.tableView viewCells'' UITableViewCells' देता है और 'इंडेक्सपाथ' नहीं देता है। इंडेक्सपैथ प्राप्त करने के बाद, हम इंडेक्सपाथ [0]। सेक्शन कर सकते हैं। – esh
मेरा मानना है कि बजाय visibleCells के लिए क्वेरी की है, यह सूचकांक पथ के लिए निम्नलिखित तरीके से पूछने के लिए बेहतर है:
NSInteger section = [[[self.tableView indexPathsForVisibleRows] firstObject] section];
आप के अनुसार UIScrollViewDelegate
तरीकों में से एक में इस कोड का उपयोग कर सकते हैं अपने की जरूरत है।
स्विफ्ट संस्करण
उपयोग पहले (वर्तमान पिन किए गए) या पिछले (पिछले दिखाया गया है)
if let section:Int = tableView.indexPathsForVisibleRows?.last?.section {
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: section), atScrollPosition: UITableViewScrollPosition.None, animated: true)
}
- 1. UITableView
- 2. UITableView
- 3. UITableView
- 4. UITableView
- 5. UITableView
- 6. UITableView
- 7. UITableView
- 8. UITableView
- 9. uitableview
- 10. UITableView
- 11. uitableview
- 12. UITableView
- 13. UITableview
- 14. UITableView
- 15. UITableView
- 16. UITableView
- 17. UITableView
- 18. UITableview
- 19. UITableView
- 20. uitableview
- 21. UITableView
- 22. UITableView
- 23. UITableView
- 24. UITableView
- 25. UITableView
- 26. UITableView
- 27. UITableview
- 28. UITableView
- 29. UITableView
- 30. UITableView
क्या विधि मैं sectionNumber चालू रखने के लिए इस में क्या रखना चाहिए? – Bot
Scrollviewdidscroll अगर आप उपयोगकर्ता को –
स्क्रॉल करते समय हर बार अद्यतन करना चाहते हैं तो धन्यवाद! – devios1