UITableView reuseIdentifier: повторяющиеся элементы сверху и снизу

У меня возникают проблемы с тем, что верхние и нижние ячейки UITableView чередуются, когда они прокручиваются и возвращаются на экран. Я считаю, что это проблема с reuseIdentifier, но я не уверен, как обойти это. PlaceTableViewCell является подклассом ABTableViewCell от Loren Britcher для быстрой прокрутки.

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

 static NSString *uniqueIdentifier = @"Cell";

 PlaceTableViewCell *cell = (PlaceTableViewCell *)[tableView dequeueReusableCellWithIdentifier:uniqueIdentifier];


 if(cell == nil){
 cell = [[PlaceTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:uniqueIdentifier];
 }

 Places *place = [self.placesArray objectAtIndex:[indexPath row]]; 
 cell.place_title = place.title;
 cell.place_street = place.street;
 cell.place_thumb = place.thumb_path;


 return cell;

}

Редактировать:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
 return [self.placesArray count];
}

Из моего подкласса ABTableViewCell:

- (void)drawContentView:(CGRect)r
{
 CGContextRef context = UIGraphicsGetCurrentContext();

 UIColor *backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
 UIColor *textColor = [UIColor blackColor];

 if(self.selected)
 {
 backgroundColor = [UIColor clearColor];
 textColor = [UIColor whiteColor];
 }

 [backgroundColor set];
 CGContextFillRect(context, r);

 CGPoint p;
 p.x = 42;
 p.y = 2;

 NSLog(@"place_thumb: %@", place_thumb);

 NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:place_thumb]];
 UIImage *image = [UIImage imageWithData:imageData];
 [image drawAtPoint: p];


 p.x = p.x + 50;

 [textColor set];
 [place_title drawAtPoint:p withFont:place_titleFont];

 p.y = 25;

 textColor = [UIColor lightGrayColor];
 [textColor set];
 [place_street drawAtPoint:p withFont:place_streetFont];

}
1 ответ

Ваш cellForRowAtIndexPath выглядит корректно. Вы должны опубликовать все свои методы источника данных для UITableView. У меня есть подозрение, что проблема может произойти в вашем методе numberOfRows.

Вы устанавливаете количество строк на основе размера массива? Кроме того, вы уверены, что ваш массив остается неизменным?

licensed under cc by-sa 3.0 with attribution.