2011-12-19 4 views
7

मैंने UITableView के बारे में कई लेख पढ़े हैं, जिनमें official doc और कुछ SO पर हैं। लेकिन मेरी स्थिति अलग दिखती है।
मैं दृश्य लोड होने पर प्रत्येक बार तालिका को अपडेट करना चाहता हूं। और मुझे HTTP अनुरोध का उपयोग कर डेटा प्राप्त करना होगा।
मैं अब क्या हो गया है:व्यू लोड होने के बाद रनटाइम पर UITableView को अपडेट करने के लिए

  1. जब तालिका दृश्य में प्रवेश, मैं डेटा को अद्यतन करने के लिए एक गैर तुल्यकालिक HTTP अनुरोध का उपयोग करना चाहिए। क्योंकि मैं मुख्य धागे का इंतजार नहीं करना चाहता हूं। ऐसा करने के लिए एक जगह, tableView:cellForRowAtIndexPath: विधि में है। इसलिए मैं शुरुआत में कोई डेटा मौजूद नहीं होने के लिए 0 लौटाता हूं।
  2. जब मुझे HTTP प्रतिक्रिया मिलती है, तो मैं beginUpdates endUpdates insertRowsAtIndexPaths:withRowAnimation:
  3. का उपयोग करके मुख्य धागे पर पंक्तियों को अद्यतन करता हूं और मुझे एक ही समय में "डेटा स्रोत" अपडेट करना होगा, लेकिन यह कैसे करना है?
    या मुझे एक डेमॉन थ्रेड बनाना चाहिए और थोड़ी देर में हर बार अपना डेटा अपडेट करना चाहिए? ताकि जब टेबलव्यू लोड हो जाए तो डेटा तैयार हो जाएगा।
+0

रिकॉर्ड के लिए, आप एक अनुरोध को संदर्भित कर सकते हैं जो सिंक्रोनस नहीं है, [asynchronous] (http://dictionary.reference.com/browse/asynchronous) के रूप में। यह संरक्षक ध्वनि नहीं माना जाता है। विनम्र, थॉमस। –

उत्तर

13

से प्रतिक्रिया मिल:

  • एक बूलियन या कुछ चर जहां मज़बूती से पता लगा सकते हैं है क्या आपके पास सभी डेटा हैं।
  • viewWillAppear में, सबकुछ रीसेट करें। अपना डेटा लोड करना शुरू करें।
  • यदि आपके पास अभी तक डेटा नहीं है, तो आप केवल एक सेक्शन के साथ एक सेक्शन प्रदर्शित करते हैं (एक प्लेसहोल्डर सेल जो पढ़ता है "लोड हो रहा है ..." और उदाहरण के लिए स्पिनर दिखाता है)।
  • एक बार डेटा पूरी तरह से लोड हो जाने के बाद, आप बूल या जो भी सेट करते हैं।
  • कॉल [self.tableView reloadData];

अपने UITableViewDataSource तरीकों में से आप सभी की जाँच करने के लिए आप पहले से ही है या नहीं डेटा मिल गया है कि क्या आवश्यकता होगी में। यदि नहीं, तो आप प्लेसहोल्डर डेटा वापस कर देते हैं।

+0

मैंने कोशिश की कि आपने क्या कहा, यह कमाल है! धन्यवाद! – Nickolas

1

[yourtablename reloadData]; आप tableview में डेटा relaod में मदद मिलेगी, आप इस कॉल कर सकते हैं आप इसे इस तरह करना होगा एक बार आप अपने सर्वर

1

मुझे यकीन नहीं है कि आप यहां क्या करने की कोशिश कर रहे हैं उसके लिए "सर्वोत्तम विधि" है। मैं आपके पास जिस विधि का प्रयास कर रहा हूं, उसे देखने का सुझाव दूंगा, और यह देखकर कि यह पर्याप्त उपयोगकर्ता अनुभव प्रदान करता है (जो भी आपको मतलब है) और यदि ऐसा नहीं होता है, तो कुछ और कोशिश करें। तालिका निश्चित रूप से खाली होने और http प्रतिक्रिया के लिए प्रतीक्षा करते समय मैं निश्चित रूप से कुछ "लोडिंग" संकेतक होने का सुझाव दूंगा।

"डेटा स्रोत" के बारे में आपके प्रश्न के संदर्भ में, UITableView का डेटा स्रोत केवल एक ऑब्जेक्ट है जो UITableViewDataSource प्रोटोकॉल लागू करता है जिसे आप here के बारे में पढ़ सकते हैं। अक्सर बार, आपके पास एक्सकोड UITableViewController ऑब्जेक्ट स्थापित करेगा जो आपके टेबल व्यू दोनों प्रतिनिधि और डेटा स्रोत के रूप में कार्य करेगा। आप वास्तव में अपने डेटा को कैसे स्टोर करते हैं आप पर निर्भर करता है। डेटा स्रोत प्रोटोकॉल केवल उन विधियों को प्रदान करता है जिनके द्वारा तालिका दृश्य लोड करने के लिए आवश्यक डेटा के लिए "पूछेगा"।

+0

आपके लिंक के लिए धन्यवाद। – Nickolas

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

  • कोई संबंधित समस्या नहीं^_^