проблема перезагрузки uitableview - PullRequest
0 голосов
/ 10 марта 2011

У меня есть tableviewcontroller и внутри него я пытаюсь загрузить данные из таблицы.У меня есть массив и создание моих пользовательских ячеек таблицы, используя этот массив.Сначала он работает нормально, но когда я хочу обновить данные таблицы (после обновления массива я вызываю метод reloadData для tableview), но обновленные данные появляются после прокрутки.а также новый размер массива короче, чем первый, который выдает исключение при прокрутке к нижней части.

reloadData не работает должным образом

myArray = [self getNewData:0];  //updating array which is used to creating cells
[self.tableView reloadData];    //reload data

спасибо ...

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Вы сказали, обновленные данные появляются после прокрутки.Вы добавляете ярлыки в свою ячейку, а не удаляете их?перед настройкой удалите все метки, добавленные в ячейку.

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    for (UIView * view in cell.contentView.subviews)
    {
        [view removeFromSuperview];
        view = nil;
    }
    //Your customization
    return cell;
}

Это может иметь место.Но то, что предложил occulus , кажется мне более точным решением.

1 голос
/ 10 марта 2011

Похоже, что вызов reloadData совершенно неэффективен. Поэтому убедитесь, что self.tableView не ноль в точке, где вы его вызываете - поместите NSLog над этой строкой так:

NSLog(@" self.tableView = %@", self.tableView);

Если это ноль, это ваша проблема.

...