J'ai des problèmes avec les cellules supérieures et inférieures de UITableView qui alternent chaque fois qu'elles défilent à l'écran. Je crois que c'est un problème avec reuseIdentifier mais je ne suis pas sûr de savoir comment le contourner. PlaceTableViewCell est une sous-classe de ABTableViewCell de Loren Britcher pour un défilement rapide.UITableView reuseIdentifier: Répétition d'éléments en haut et en bas
- (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;
}
Edit:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.placesArray count];
}
De ma sous-classe de 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];
}
Quel est le problème que vous rencontrez? – john
Si vous faites défiler vers le bas et revenez en haut, le dernier élément prend la place du premier élément. Si vous faites défiler vers le haut et vers le bas, le contraire se produit (le premier élément devient le dernier) –
Sont-ils tous dans la même section? – john