uitableviewcell problem
i'm using the customised cell to Show an image. But, when i add an image to the first row, its get being loaded every 4th row. What might be the problem? I'm picking the image from the iphone photo library using uiimage开发者_如何学Cpickercontroller and is giving it to the first cell of the table.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
CGSize newSize = CGSizeMake(80, 80);
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
imageView.image = newImage;
[picker dismissModalViewControllerAnimated:YES];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CustomCellIdentifier = @"CustomCellIdentifier";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
for (id currentObject in nib){
if ([currentObject isKindOfClass:[CustomCell class]]){
cell = (CustomCell *)currentObject;
//[cell loadFullComments:[latestFMLComments objectAtIndex:indexPath.row]];
break;
}
}
}
NSUInteger r= [indexPath row];
NSUInteger s= [indexPath section];
//[cell setText:[NSString stringWithFormat:@"I am cell %d", indexPath.row]];
// NSInteger r= indexPath.row;
if(r == 1)
if (s== 0){
UIImage *img=imageView.image;
cell.imageView.image = img;
}
return cell;
}
The iPhone SDK UITableView
optimizes UITableViewCell
creation by reusing cells that aren't in view instead of recreating new ones all the time. That's done through your call of dequeueReusableCellWithIdentifier:
.
In tableView:cellForRowAtIndexPath:
, you need to ensure that the cell you dequeue gets cleared so it only contains new cell content. In this case, having a cell.imageView.image = nil
before your if (r == 1) ...
statement will suffice.
精彩评论