मैं तारीखों के साथ एक UITableView बनाने की कोशिश कर रहा हूं, मुझे बहुत रोमांचक नहीं होना चाहिए, मुझे पता है। यह वर्तमान तारीख के आसपास शुरू होता है, लेकिन उपयोगकर्ता को (भविष्य) और ऊपर (अतीत) तक स्क्रॉल करने में सक्षम होना चाहिए। इसका परिणाम संभावित रूप से पंक्तियों की अनंत संख्या में होता है। तो इसे बनाने के बारे में क्या तरीका है?शाश्वत स्क्रॉलिंग UITableView
NSIntegerMax
रिटर्निंग के रूप में पंक्तियों की संख्या पहले से ही अनुप्रयोग क्रैश हो, लेकिन फिर भी ऐसा नहीं है, तो वह अभी भीस्क्रॉल करने के लिए सक्षम किया जा रहा के लिए खाते में नहीं है। मैं पाठ्यक्रम का आधा रास्ता शुरू कर सकता हूं, लेकिन आखिरकार अधिकतम है।
कोई विचार यह कैसे करना या नकली करना है? क्या मैं किसी भी तरह उपयोगकर्ता को ध्यान में रखे बिना तालिका को अपडेट/पुनः लोड कर सकता हूं, इसलिए मैं कभी भी सीमा में नहीं चलता?
समाधान:
मैं @ Ender के सुझाव के साथ चला गया और कोशिकाओं की एक निश्चित राशि के साथ एक मेज बनाया है। लेकिन जब उपयोगकर्ता फिक्स्ड सेल के किनारों के पास स्क्रॉल करता है, तो इसे फिर से लोड करने की बजाय, जब मैं स्क्रॉलिंग को रोकता हूं तो टेबल को फिर से लोड करने के साथ चला जाता है। बिना किसी रोक के महान दूरी को स्क्रॉल करने वाले उपयोगकर्ता के साथ समायोजित करने के लिए, मैंने पंक्ति गणना को 1000 तक बढ़ा दिया, ROW_CENTER निरंतर 500 को डाल दिया। यह वह तरीका है जो पंक्तियों को अद्यतन करने का ख्याल रखता है।
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSArray *visible = [self.tableView indexPathsForVisibleRows];
NSIndexPath *upper = [visible objectAtIndex:0];
NSIndexPath *lower = [visible lastObject];
// adjust the table to compensate for the up- or downward scrolling
NSInteger upperDiff = ROW_CENTER - upper.row;
NSInteger lowerDiff = lower.row - ROW_CENTER;
// the greater difference marks the direction we need to compensate
NSInteger magnitude = (lowerDiff > upperDiff) ? lowerDiff : -upperDiff;
self.offset += magnitude;
CGFloat height = [self tableView:self.tableView heightForRowAtIndexPath:lower];
CGPoint current = self.tableView.contentOffset;
current.y -= magnitude * height;
[self.tableView setContentOffset:current animated:NO];
NSIndexPath *selection = [self.tableView indexPathForSelectedRow];
[self.tableView reloadData];
if (selection)
{
// reselect a prior selected cell after the reload.
selection = [NSIndexPath indexPathForRow:selection.row - magnitude inSection:selection.section];
[self.tableView selectRowAtIndexPath:selection animated:NO scrollPosition:UITableViewScrollPositionNone];
}
}
जादू टूट जाता है जब रोक है, लेकिन तालिका दृश्य bounces
संपत्ति विकलांग के साथ के बिना मेज के किनारे करने के लिए एक उपयोगकर्ता स्क्रॉल, इस केवल एक छोटी सी गड़बड़ की तरह लगता है, अभी तक पूरी तरह से स्वीकार्य। हमेशा के रूप में, धन्यवाद StackOverflow!
कृपया नीचे दिए गए मेरे उत्तर में कोड आज़माएं। यह एक साधारण तर्क का उपयोग कर रहा है। –