/ / Проблем с инициирането на UITableViewCells въз основа на indexPath.row - iphone, Objective-c, какао, какао-докосване

Проблем с инициирането на UITableViewCells въз основа на indexPath.row - iphone, objective-c, какао, какао-докосване

Имам следния метод, който трябва да се попълниклетките на моя 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;

}

Това не работи както се очаква. Таблицата в крайна сметка се попълва само с първите три елемента от масива ми и след това тези данни се използват повторно, докато моята таблица приключи. Таблицата трябва да използва всички данни от моя масив. Някаква идея защо това не работи както се очаква?

Отговори:

3 за отговор № 1

Необходимо е да задавате правилните данни за клетките всеки пътвръщате клетка, независимо дали е нова или използвана повторно. Докато превъртате надолу, клетките от горната част на таблицата се премахват и използват повторно за дъното на таблицата. Ето защо виждате първите няколко елемента данни да се повтарят ,

- (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 за отговор № 2

Когато върнете cellComments обратно отdequeueReusableCellWithIdentifier обаждане, трябва да извикате loadFullCommnents отново - клетките се използват повторно, така че ще имате само толкова създадени, колкото се показват на екрана.