2016-06-01 9 views
-1

Ich zeige einige Zeilen in die UITableView und die Anzahl der Zeilen in der Kopfzeile des Abschnitts, aber wenn ich die Zeilen löschen, dann sieht die Ansicht sehr seltsam wird mit Animation löschen . Schau in meinen Code, wenn mir etwas fehlt.Entfernen der Zeile von UITableView und Aktualisieren der Abschnittsüberschrift

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[[UIView alloc]init] autorelease]; 

    view.backgroundColor = [UIColor colorWithRed:(249.0/255.0) green:(249.0/255.0) blue:(249.0/255.0) alpha:1]; 

    UILabel *label = [[[UILabel alloc]initWithFrame:CGRectMake(15, 15, 100, 15)] autorelease]; 
    [label setTextColor:[UIColor colorWithRed:0.56 green:0.56 blue:0.58 alpha:1.0]]; 
    [label setFont:[UIFont fontWithName:@"HelveticaNeue" size:12]]; 
    label.text = @"SELECTED ACCOUNTS ("; 

    NSString *numberOfAccounts = [NSString stringWithFormat:@"%li)", (unsigned long)[self->_selectedAccounts count]]; 

    if([self->_selectedAccounts count]) 
     label.text = [label.text stringByAppendingString:numberOfAccounts]; 

    [view addSubview:label]; 
    [view sizeToFit]; 
    [label sizeToFit]; 
    return view; 
} 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section == 0) 
    { 
     NSMutableArray *selectedAcc = [[NSMutableArray alloc] initWithArray:self->_selectedAccounts]; 
     [selectedAcc removeObjectAtIndex:indexPath.row]; 
     self->_selectedAccounts = selectedAcc; 
     [self->_MyTableView beginUpdates]; 
     [self->_MyTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; 
     [self->_MyTableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationNone]; 
     [self->_MyTableView endUpdates]; 
    } 
} 

Antwort

0

Versuchen Sie dies in Ihrem wenn Bedingung:

[tableView beginUpdates]; 

[yourArray removeObjectAtIndex:myIndexPath.section]; 
[yourArrayAnswerCount removeObjectAtIndex:myIndexPath.section]; 
[tableView deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] withRowAnimation:UITableViewRowAnimationRight]; 


    [tableView endUpdates]; 

Dies wird Ihnen auch helfen ... https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html

+0

Danke für die Antwort, aber ich bin in der Lage, die Zeile zu löschen und aktualisieren Sie die Header das einzige Problem mit meinem Code ist, dass es nicht, wie es sollte belebt. Sagen wir, ich die zwei Zeilen, die Zeilen löschen und die Kopfzeile aktualisieren, sind wie folgt: '[self -> _ MyTableView deleteRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationTop]; // [self -> _ MyTableView reloadSektionen: [NSIndexSet indexSetWithIndex: indexPath.section] withRowAnimation: UITableViewRowAnimationNone]; 'In diesem Fall habe ich den Code kommentiert, der meine Sektionskopfzeile aktualisiert, so dass die Animation der Dletion jetzt gut ist. –

+0

OK. und lies bitte diesen Link in meiner Antwort .. das hilft dir auch bei deinem Problem ... –

+0

Ja, ich versuche den Link zu verstehen, den du gegeben hast. –

0

ersetzen

[self->_MyTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; 
[self->_MyTableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationNone]; 

mit

[self->_MyTableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop]; 

reloadSections: sollte rowUpdates implizieren. Dies sollte

+0

Danke für die Antwort ja die Art, wie Sie sagten, ich habe versucht, aber immer noch gibt es seltsame Animation, die ich nicht will. Bitte überprüfen Sie meinen Kommentar auf @Suraj Sukale Antwort. –

0

genügen, wenn Sie löschen möchten, und fügen Sie Zeilen mit Animation versuchen auf diese Weise: -

[tableView beginUpdates]; 
[tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade]; 
[tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade]; 
[tableView endUpdates]; 

deleteIndexPaths ist ein Array von NSIndexPaths aus Ihrer Tabelle gelöscht werden.

NSArray *deleteIndexPaths = [[NSArray alloc] initWithObjects: 
     [NSIndexPath indexPathForRow:0 inSection:0], 
     [NSIndexPath indexPathForRow:1 inSection:0], 
     [NSIndexPath indexPathForRow:2 inSection:0], 
     nil]; 

Mein sein es wird Ihnen helfen

+0

Nun löscht die Zeile funktioniert gut aus meinem Code, meine einzige Sorge ist es, den Titel des Abschnitts, der die Anzahl der Zeilen haben wird, zu aktualisieren. –

Verwandte Themen