2011-02-23 19 views
26

मैं iphone के लिए एक नेविगेशन आधारित अनुप्रयोग बना रहा हूं।UITableView पुनः लोड डेटा

मेरे विचार नियंत्रकों में से एक इस तरह दिखता है:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

तो मैं एक UITableView उपयोग कर रहा हूँ डेटा दिखाने के लिए।

दृश्य लोड हो जाए, मैं शीर्ष नेविगेशन बार में एक बटन का उपयोग करें जब एक शब्दकोश में एक समारोह loadStuff लोड कुछ सामान को चलाने के लिए।

मेरा प्रश्न: कैसे मैं उस loadStuff समारोह (जो दिखाई नियंत्रक के अंतर्गत आता है) से कि ViewController में तालिका दृश्य फिर से आबाद करते

उत्तर

53
(जहां tableView अपने उदाहरण चर का नाम है) का उपयोग करके देखें

आप हमेशा [tableView reloadData] विधि का उपयोग कर सकते हैं!

लेकिन आप स्थानीय रूप से संग्रहीत कुछ डेटा है और कुछ सर्वर से नई सामग्री लोड हो रहा है तो आप के लिए जा सकते हैं:

[tableView beginUpdates]; 
[tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 

और तुम

[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 
+0

सरणीफिंडेक्स पथ क्या होगा मैं तालिका डेटा के लिए mutabledictionary का उपयोग कर रहा हूं और मैं शब्दकोश से एक ऑब्जेक्ट को हटाना चाहता हूं और तालिकादृश्य अद्यतन करें – pravin

25

[tableView reloadData];

+23

मैं अपना उपयोगकर्ता नाम ^^ – Emil

+3

@Emil पर loled: मैं बस आशा है कि कोई भी यह किसी दिन कोशिश करता है। ;) –

+0

अधिकांश मशीनों पर कुछ भी नहीं होगा, हालांकि लगभग हर ओएस में अब एक ब्लॉक है .. शर्म की बात है, हालांकि: पी – Emil

3

उपयोग कर सकते हैं अगर आप मौजूदा पंक्ति को हटाना चाहते हैं

[tableView reloadData]; 
: अपने कार्य loadstuff के अंत में निम्नलिखित कोड लिख कर उर तालिका की सामग्री को फिर से लोड
5

यहां तक ​​कि फिर से लोड ...

[tableView reloadData]; 

संपादित पंक्तियों/सेल को फिर से लोड नहीं होगा,]। तालिका के आईबीओलेट को जांचें XIB फ़ाइल में कनेक्ट नहीं है।

यही कारण है में से एक हो सकता है।

4

तथ्य यह है कि आपको यह सुनिश्चित करने की ज़रूरत है कि आपके टेबलव्यू का स्रोत आपके परिवर्तनों को भी दर्शाता है।

जब आप कुछ हटाते हैं, तो [tableView reloadData] कुछ भी नहीं करेगा जब आप पहले अपने स्रोत में आइटम को हटा नहीं देते हैं।

मुझे निम्नलिखित स्थिति में यह समस्या थी: मेरे पास एक टेबलव्यू था जिसमें मेरे दस्तावेज़ फ़ोल्डर में कुछ फ़ाइलें दिखाई गईं। तब मैं कुछ फाइलों को हटाना चाहता था और मैंने उन्हें दस्तावेज़-फ़ोल्डर में हटा दिया, लेकिन वे अभी भी मेरी सूची में दिखाई देते हैं। मैंने इस पोस्ट में [tableView reloadData] और अन्य सभी सुझाए गए उत्तरों की कोशिश की, लेकिन अभी भी सूचीबद्ध फाइलें थीं। जब मैं tableview बंद कर दिया और इसे फिर से खोला, तो सूची ठीक था। क्यूं कर? ठीक है, क्योंकि मैं अपने सभी फाइलों के साथ एक NSArray भरा -> इस tableView के लिए मेरे "स्रोत" है। इसलिए जब मैं एक फ़ाइल हटाता हूं, तो मुझे दस्तावेज़-फ़ोल्डर में फ़ाइल को हटाने की आवश्यकता नहीं होती है, मुझे इसे सरणी से भी हटाने की आवश्यकता होती है। -> इसलिए मैंने इसे हटाने की क्षमता रखने के लिए एक एनएसएमयूटेबलएरे बनाया। फिर फोन [tableView reloadData] और सूची ठीक है। ;-)

0

[tableView reloadData]; जहां tableview अपने UITableView के नाम

2

सुनिश्चित करें कि आप datasource की स्थापना और tableView के लिए प्रतिनिधि कर रहे हैं है।

tableView.delegate = self; 
tableView.dataSource = self; 

सुनिश्चित करें कि उचित प्रतिनिधि और डेटास्रोत विधि नियंत्रक में लागू की गई है।

loadStuff विधि में, फोन:

[tableView reloadData]; 

तेज में, एक ही:

tableView.delegate = self 
tableView.dataSource = self 
tableView.reloadData() 
संबंधित मुद्दे