удаление таблицы, но все еще показывается в табличном представлении - PullRequest
0 голосов
/ 09 февраля 2011

мои данные отображаются в таблице, когда я выбираю данные для удаления их удаленных из базы данных, но не из таблицы, я возвращаюсь в другое представление и снова возвращаюсь к представлению удаления таблицы, затем удаление данных не отображается снова, я использую этокод ...

- (void)deleteRowsAtIndexPaths:(NSArray *)indexPath withRowAnimation:(UITableViewRowAnimation)animation
{

    NSLog(@"Hello");

}


-(void) tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 

{
//  int row = [indexPath row];
    [self.table beginUpdates];
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {   
        Hadits *delHadit = [self.allBookMarks objectAtIndex:indexPath.row];
        dbAccess *dbmethods = [[dbAccess alloc] init]; 
        NSInteger delHaditid = delHadit.haditid;
        [dbmethods deleteBookMark:delHaditid];
        [dbmethods release];
    }       

    [self deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                          withRowAnimation:UITableViewRowAnimationFade];
    [self.table endUpdates];

    NSLog(@"Hello");
    [self.table reloadData];

}

... нужна помощь .. С уважением Haseeb

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Есть небольшая ошибка (или я думаю, что соответствующий код не отображается).Вы удалили запись из базы данных, но я думаю, что вы пропустили ее удаление из массива, который служит источником данных таблицы просмотра.

-(void) tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [self.table beginUpdates];

    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {   
    //  [self.table deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
        Hadits *delHadit = [self.allBookMarks objectAtIndex:indexPath.row];
        dbAccess *dbmethods = [[dbAccess alloc] init]; 
        NSInteger delHaditid = delHadit.haditid;
        [dbmethods deleteBookMark:delHaditid];
        [dbmethods release];
        [self.allBookMarks removeObject:delHadit];/// change of code 
    }
    //[self.table reloadData];
    [table endUpdates];
}
1 голос
/ 09 февраля 2011
Появится

, подготовьте ваш массив, имеющий запись, и в commitEditing добавьте одну строку.

[self viewWillApear:YES];

и в viewWillAppear добавьте эту строку

[yourTable reloadData];

после извлечения данных из базы данных.

...