मैं कुछ मौजूदा भारी हाथ कोड को संशोधित करने पर काम कर रहा हूं जो किसी भी बदलाव पर [tableView reloadData]
को कॉल करने के लिए काम कर रहा है, ताकि सम्मिलित/हटाए गए तरीकों के साथ अधिक विशिष्ट तालिका अपडेट का उपयोग किया जा सके।UITableView insertSections: withRowAnimation: सभी तालिका कक्षों का अनुरोध किया जा सकता है
हालांकि, मुझे ऐसा करने में कुछ बुरा व्यवहार हो रहा है। पहले, जैसा कि कोई कल्पना करेगा, जब टेबल लोड हो जाए, तो उसने उस पंक्तियों के लिए केवल कोशिकाओं से अनुरोध किया जो उस समय दिखाई दे रहे थे। यह व्यवहार तब था जब reloadData
का उपयोग किया गया था।
अब insertSections
कहा जा रहा है, सभी कोशिकाओं का अनुरोध उस अद्यतन के बाद किया जाता है, जो सैकड़ों हो सकते हैं। इसके परिणामस्वरूप कोशिकाओं को प्रत्येक पंक्ति के लिए बनाया जा रहा है, पूरी तरह से पुन: प्रयोज्य सेल कतार को बर्बाद कर रहा है और बस अपशिष्ट के आसपास है। मैं कुछ गलत कर रहा हूँ।
परिवर्तन है इस सरल, कोड है कि tableView में परिणाम ही दिखाई पंक्तियों के लिए पूछ:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// ... ensure it's the right key
[tableView reloadData];
}
कोड कि tableView सब कुछ के लिए पूछ में परिणाम:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// ... ensure it's the right key
NSUInteger sectionCount = [self sectionCount];
NSIndexSet *indices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, sectionCount)];
[tableView insertSections:indices withRowAnimation:UITableViewRowAnimationFade];
}
मैं वापस टॉगल कर सकते हैं और व्यवहार परिवर्तन देखने के लिए आगे। निराशा होती। विचार?
यह देखने के लिए कि क्या किसी के पास कोई और अंतर्दृष्टि है या नहीं, सिर्फ एक उदारता जोड़ना।
स्टार्टअपडेट्स/एंड अपडेट्स कुछ भी प्रभावित नहीं करता है, और मैं इसकी अपेक्षा नहीं करता, यह केवल एक कमांड है, एक अपडेट में सहवास करने के लिए अतिरिक्त कुछ भी नहीं है।
मुझे लगता है कि यह एनीमेशन की इच्छा का एक साइड इफेक्ट है। सबकुछ "स्लाइड" करने के लिए, इसमें सबकुछ प्रस्तुत करना होगा। खेल खत्म।
आपने कैसे निर्धारित किया कि वास्तव में सभी कोशिकाओं का अनुरोध एक बार में किया जा रहा है? क्या कोई भी खाली नहीं किया जा रहा है? – Pascal
मैंने एक छोटी परीक्षा परियोजना बनाई है और जो व्यवहार आप देख रहे हैं उसे पुन: पेश कर सकते हैं। यह वास्तव में उत्सुक है।अगर आप UITableViewRowAnimationNone निर्दिष्ट करते हैं तो व्यवहार अकेले नहीं हो सकता है। समस्या तब नहीं होती है जब सम्मिलित स्थान स्क्रीन पर सम्मिलित होने पर स्क्रीन पर नहीं है: क्रियाएँ: पंक्तिवृत्त: कहा जाता है। –