Ячейки UITableView загружаются правильно, но потом меняются - PullRequest
1 голос
/ 07 апреля 2009

Следующий метод загружает данные из массива в пользовательские ячейки UITableView. Данные загружены правильно. Тем не менее, когда я прокручиваю вниз данные в вышеуказанных ячейках (ячейки не видны) меняются на казалось бы случайные элементы в массиве.

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

    cellComments=nil;
    cellComments=(FullCommentCell *)[tableView dequeueReusableCellWithIdentifier:FullCommentCell_ID];
    if(cellComments==nil)
    {
        [[NSBundle mainBundle]loadNibNamed:@"FullCommentCell" owner:self options:nil];
    }
    NSString *row = [NSString stringWithFormat:@"#%i",indexPath.row+1];
    [cellComments loadFullComments:[latestFMLComments objectAtIndex:(indexPath.row+1)] withCommentNumber:row];
    //cellComments.userInteractionEnabled=NO;
    return cellComments;
}

У меня также есть следующий метод, который обрабатывает, когда я нажимаю на ячейку. Когда данные ячейки изменяются на некоторый случайный элемент в массиве - если я нажимаю на ячейку (которая вызывает метод ниже), данные в ячейке изменяются на правильные данные.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self tableView:tableView cellForRowAtIndexPath:indexPath];
}

Есть идеи, почему это происходит ??

Ответы [ 3 ]

1 голос
/ 07 апреля 2009

Эльфред имеет правильную идею. При использовании

cellComments=(FullCommentCell *)[tableView dequeueReusableCellWithIdentifier:FullCommentCell_ID];

Вызов метода, вам необходимо убедиться, что любые подвиды / свойства, такие как метки, изображения, текст и т. Д., Установлены каждый раз в этой ячейке. Вы не можете предполагать, что получите «свежую» ячейку без содержимого.

Например, при отображении ячейки с индексом 17 табличное представление может исключить многократно используемую ячейку ранее с индексом 3. Эта ячейка будет иметь те же свойства, что и в индексе 3, и вы несете ответственность за сбросить их. (Например, изменение текста с «Я ячейка 3» на «Я ячейка 17».)

1 голос
/ 07 апреля 2009

Вы используете кэшированные ячейки, вероятность того, что вы неправильно сбрасываете элементы subvview своей ячейки в loadFullComments.

0 голосов
/ 07 апреля 2009

Я изменил UITextView на многострочную UILabel, и теперь все работает. Я не уверен, почему это имеет значение - но эй, это работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...