विचार यह है कि वीसी पहचानने के लिए जब रिमोट लोड की आवश्यकता हो और इसे शुरू करें। एकमात्र मुश्किल हिस्सा सही स्थिति को रख रहा है ताकि आप बहुत ज्यादा ट्रिगर न करें।
मान लें कि आपका संग्रह खड़ी है चलो, हालत के बारे में आप जानना चाहते है, जब:
BOOL topLoad = scrollView.contentOffset.y < M * scrollView.bounds.size.height
या जब
BOOL bottomLoad = scrollView.contentOffset.y > scrollView.contentSize.height - M * scrollView.bounds.size.height
दूसरे शब्दों में
, जब हम से एम "पृष्ठ" कर रहे हैं सामग्री के किनारे। अभ्यास में हालांकि, यह स्थिति अधिक ट्रिगर हो जाएगी, जैसे कि जब आप पहली बार लोड हो रहे हों, या यदि आप इसे scrollViewDidScroll
पर परीक्षण कर रहे हैं, तो आप उपयोगकर्ता स्क्रॉलिंग के प्रत्येक पिक्सेल के लिए वेब अनुरोध जेनरेट नहीं करना चाहते हैं।
इसे सही प्राप्त करने के लिए, दृश्य नियंत्रक में अतिरिक्त स्थिति की आवश्यकता है। वीसी में बूल की एक जोड़ी हो सकती है, जैसे topLoadEnabled, bottomLoadEnabled, जो दृश्य तैयार होने तक नहीं हैं। फिर, प्रतिनिधि कोड को स्क्रॉल करें इस तरह दिखता है:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// compute topLoad and bottomLoad conditions
if (topLoad && self.topLoadEnabled) [self startTopLoad];
इसी तरह नीचे के लिए। लोड कोड इस तरह दिखता है, संक्षेप में:
self.topLoadEnabled = NO; // don't trigger more loading until we're done
[self.model getMoreTopStuff:^(NSArray *newStuff, NSError *error) {
// do view inserts, e.g. tableView.beginUpdates
self.topLoadEnabled = YES;
}];
नीचे के लिए वही विचार। हम उम्मीद करते हैं कि मॉडल खुद के लिए लाएगा (शायद मॉडल में छवि यूआरएल है) और परिणाम कैश करें (फिर मॉडल में छवियां हैं)। दृश्य के लिए डेटासोर्स के रूप में, व्यू कंट्रोलर को दृश्य कक्ष कॉन्फ़िगर करने के लिए बुलाया जाता है। मैं सिर्फ छवियों के लिए आदर्श रूप से मॉडल पूछ सकता हूं। मॉडल को या तो प्राप्त छवियों या प्लेसहोल्डर का जवाब देना चाहिए।
आशा है कि यह समझ में आता है।
एक तरीका जिस तरह से मैं सोच सकता हूं कि UICollectionView को वास्तव में दृश्य भाग (कुछ मुखौटा या उससे कम के नीचे छिपा हुआ) से बड़ा बनाना है। लेकिन यह निश्चित रूप से इष्टतम समाधान नहीं है :) –
लेकिन चूंकि आपका डेटा असीमित रूप से लोड हो गया है: हो सकता है कि यह संग्रहदृश्य नहीं है लेकिन डेटा स्रोत समस्या ... –
आपके संग्रह में आपके पास छवियां कैसे हो सकती हैं, क्योंकि यदि आप सभी छवियों को लोड करते हैं एक ही समय में आप एक स्मृति चेतावनी –