2011-03-13 9 views
6

की सभी पंक्तियों स्पष्ट करने के लिए मैं UINavigationBar मैं इसे uitablview की सभी पंक्तियोंकैसे UITableView

कैसे मुझे लगता है कि कर सकते हैं स्पष्ट करने के लिए उपयोग करना चाहते हैं पर एक बटन जोड़ा?

+3

कृपया यह स्पष्ट आप "स्पष्ट सभी पंक्तियों" क्या मतलब है। – hennes

+0

इसका मतलब है कि तालिका दृश्य से सभी सामग्री हटाएं –

उत्तर

1

क्या आप वास्तव में पंक्ति को साफ़ करके क्या मतलब है? पाठ के बिना आप अभी भी उन वहाँ होना चाहते हैं, लेकिन?

UITableViewCell *cell; 

    NSIndexPath *index; 

     for (int i = 0 ; i < count; i++) { 
      index = [NSIndexPath indexPathForRow:i inSection:0]; 
      cell = [tableView cellForRowAtIndexPath:index]; 
      cell.textLabel.text = @""; 
     } 

आप उन्हें नष्ट करना चाहते हैं, तो आप इस कोड का उपयोग कर सकते हैं:: यदि हाँ, यहाँ इस कोड है

[uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationFade]; 
+0

मैंने आपका दूसरा कोड इस्तेमाल किया लेकिन सिगैबर्ट हमेशा, मैं – Ali

+0

क्या करूँगा क्या आप कृपया वास्तव में क्या किया है इसका एक नमूना कोड जोड़ सकते हैं? – Basel

+0

लूप के लिए मैं वृद्धि और उपयोग करता हूं: अनुक्रमणिका = [एनएसआईएनएक्सएक्सपाथ इंडेक्सपाथफोररो: मैं इनसेक्शन: 0] ;; [uiTable deleteRowsAtIndexPaths: [NSArray arrayWithObject: index] withRowAnimation: UITableViewRowAnimationFade]; लेकिन सीकॉन्ट पुनरावृत्ति के बाद यह – Ali

2

वहाँ एक UITableView प्रतिनिधि विधि है कि UITableView नियंत्रण भरता होना चाहिए:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

इस विधि और परिवर्तन जहां प्रत्येक कक्ष के लिए डेटा से खींचा जा रहा है का पता लगाएं। आप वर्तमान मूल्यों अपने tableView कोशिकाओं को भरने के लिए की एक सरणी का उपयोग करने की indexPath का उपयोग कर रहे हैं, तो आप प्रोग्राम खाली मूल्यों की एक सरणी के लिए स्विच कर सकते हैं, या यहां तक ​​कि सिर्फ इस विधि से रिक्त कक्षों लौट जब हालत सही है।

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    if (deleting) 
     return rowcount; 
    else 
     return [tempArray count]; 
} 

इसके अलावा, आप संशोधित करने की आवश्यकता: -

+0

दिखाई दी और उसे तालिका दृश्य पर पुनः लोडडेटा को भी कॉल करने की आवश्यकता है। – hennes

+0

अच्छी पकड़! :-) –

0

दुर्घटना क्योंकि आप संख्या को रीसेट करने के यदि पंक्तियों में गिनती की जरूरत हो रहा है

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    return [tempArray count]; 
} 

एक तरह से एक झंडा चर का उपयोग नीचे के रूप में है के रूप में नीचे दिए गए कोड को हटाने: अपने ज फ़ाइल में

deleting = YES; 
    for (i = [uiTable numberOfRowsInSection:0] - 1; i >=0 ; i--) 
    { 
    NSIndexPath *index = [NSIndexPath indexPathForRow:i inSection:0]; 
    [uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationFade]; 

    rowcount = i; 
    } 

    deleting = NO; 
    [uiTable reloadData]; 

BOOL deleting; 
NSInteger rowcount; 

आशा इस मदद करता है ...

2

सरल .. शून्य और [self.tableView reloadData] करने के लिए अपने डेटा स्रोत (NSArray या NSDictionary) सेट!

+0

क्या वह सरणी को हटा नहीं देगा और जहां वस्तुएं अभी भी मौजूद होंगी? यदि हां, तो यह एक अच्छा समाधान नहीं है क्योंकि यह मेमोरी लीक बनाता है ... इसके बजाय आपको NSMutableArray * arrayThatYouCanRemoveObjects = [NSMutableArray arrayWithArray: your_array] का प्रयास करना चाहिए; [arrayThatYouCanRemoveObjects removeObjectAtIndex: your_object_index]; [your_array रिलीज]; your_array = [[NSArray arrayWithArray: arrayThatYouCanRemoveObjects] बनाए रखें]; http://stackoverflow.com/questions/1728475/nsarray-remove-item-from-array से कॉपी किया गया – yunas

12

एक थोड़ी देर हो चुकी है ... लेकिन कोशिश यह:

आप कहाँ मेज साफ करना चाहते हैं:

// clear table 
clearTable = YES; 
[table reloadData]; 
clearTable = NO; 

इस समारोह की तरह दिखना चाहिए:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if(clearTable) 
     return 0; 

    (...) 
} 
1

इससे पहले कि आप को फिर से लोड कर रहे हैं तालिका इसलिए की तरह अपने tableView सरणी (सरणी जो अपने tableView आबादी वाले) से सभी वस्तुओं को हटाने:

[myArray removeAllObjects]; 
[tableView reloadData]; 
0

rowcount = i कॉल से पहले जाना चाहिए।

[uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] 
withRowAnimation:UITableViewRowAnimationFade]; 

अन्यथा, यह क्रैश हो जाएगा।