2009-05-27 19 views
16

यहाँ मैं के साथ आ गया है:मैन्युअल रूप से UITableView में एक पंक्ति को कैसे हटाएं?

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; // my table view has 2 sections 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop]; 

हर मैं बनाने और चलाने के लिए, यह निम्न अपवाद फेंकता है:

अमान्य अपडेट: खंड 0. की संख्या में पंक्तियों की अमान्य संख्या अपडेट के बाद उस खंड में निहित पंक्तियों की संख्या के बराबर होना चाहिए, इसके बाद अद्यतन से पहले पंक्तियों की संख्या के बराबर होना चाहिए, या उस खंड से जोड़े गए पंक्तियों की संख्या को घटाएं या घटाएं।

यह थोड़ा उलझन में है। अनुभाग 1 पर सेट है, फिर भी अपवाद का कहना है कि यह 0 है।

+4

अपनी लाइन NSIndexPath * indexPath = प्यार करता था में परिवर्तन करने की जरूरत है [: 0 insection: NSIndexPath indexPathForRow 1] ;. आपके लिए +1;) – oberbaum

उत्तर

29

मैंने इसे समझ लिया।

ऊपर उल्लिखित कोड के अलावा, मैं भी डेटा स्रोत

[items removeObjectAtIndex:0]; 
+2

यह सही है। –

+8

किसी भी व्यक्ति के लिए जो त्रुटि प्राप्त कर रहा था, जैसा कि मैं था, ओपी में कहा गया था; कृपया UITableView की सामग्री को बदलने से पहले अपने डेटा मॉडल को 'पहले' बदलना सुनिश्चित करें। – Sean

5
- (IBAction)deleteCustomCellWithUIButton:(id)sender 
{ 
    NSLog(@"Message From Custom Cell Received"); 
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:(UITableViewCell *)[[[sender superview] superview] superview]]; 
    NSUInteger row = [indexPath row]; 
    [self.myDataArray removeObjectAtIndex:row]; 
    [self.myTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+1

मैं बदलने शुरू करने से पहले '[self.myTableView startUpdates] जोड़ने' की सलाह देता हूं। और '[self.myTableView endUpdates];' एक बार जब आप कर लेंगे। – thedp

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