После удаления строки она все еще отображается.

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    Audio *current = [logic findAudioByRow:indexPath.row];
    [logic deleteAudio:current callback:^{
        dispatch_async(dispatch_get_main_queue(), ^{
           //some audio player logic that does not important for the topic
        });
    }];
}

Этот метод вызывает эту функцию:

-(void)deleteAudio:(Audio *)audio callback:(voidCallback)callback
{
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSString * ownerId = [NSString stringWithFormat:@"%ld", [audio.owner_id integerValue]];
        NSString * audioId = [NSString stringWithFormat:@"%ld", [audio.aid integerValue]];

        APIData *apiData = [[APIData alloc] initWithMethod:DELETE_AUDIO_BY_ID user:[[UserLogic instance] currentUser] queue:requestQueue params:[[NSMutableDictionary alloc] initWithObjectsAndKeys:audioId,@"aid", ownerId, @"oid", nil]];

        [APIRequest executeRequestWithData:apiData block:^(NSURLResponse *response, NSData *data, NSError *error) {
        }];
        callback();
        [self updateContent:YES];
    });
}

Я не понимаю, когда мне следует вызывать reloadData для обновления представления.

0
eulers_child 12 Май 2014 в 15:19

2 ответа

Лучший ответ

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

1
Paulw11 12 Май 2014 в 12:17

В вашем коде не отображается метод удаления. Вот как вы должны использовать методы удаления строк.

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

        [mySourceArray removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

}
4
Ramaraj T 12 Май 2014 в 11:21