Проблема с инициированием UITableViewCells на основе indexPath.row - PullRequest
0 голосов
/ 06 апреля 2009

У меня есть следующий метод, который должен заполнить ячейки моего UITableView данными из массива. Я хочу получить данные из массива, используя строку, в которую данные загружаются в качестве индекса.

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


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

}

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

Ответы [ 2 ]

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

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

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

    cellComments = (FullCommentCell *)[tableView dequeueReusableCellWithIdentifier:FullCommentCell_ID];
    if (cellComments == nil) {
        [[NSBundle mainBundle]loadNibNamed:@"FullCommentCell" owner:self options:nil];

        // Do any one-time setup here, like adding subviews
    }

    // Set cell data for both new and reused cells here

    [cellComments loadFullComments:[latestFMLComments objectAtIndex:indexPath.row]];
    //cellComments.userInteractionEnabled=NO;

    return cellComments;
}
0 голосов
/ 06 апреля 2009

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

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