开发一个应用程序。我将imageview放在每个tableview单元格中,如
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
itemimageview=[[UIImageView alloc]initWithFrame:CGRectMake(5, 8, 75, 70)];
itemimageview.image=[UIImage imageNamed:@"thumb_mdpi.png"];
itemimageview.userInteractionEnabled = YES;
[cell.contentView addSubview:itemimageview];
return cell;
}
当你点击任何一行时,我们从我们的iPhone相机中获取图像。为此,我在didSelectROw方法中编写以下代码。
UIImagePickerController *imagePicker = [[[UIImagePickerController alloc] init]
autorelease];
imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera;
//imagePicker.allowsImageEditing = NO;
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
在我使用UIIMagePickerController委托方法之后
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
NSLog(@"image selected");
itemimageview.image =image;
[self dismissModalViewControllerAnimated:YES];
}
但我的问题是在选择图像后,该图像将仅显示在最后一个单元格。如果您选择第一行并拍摄图像,那么该图像将出现在最后一行。所以请告诉我有什么变化我获取每一行图像的代码。
答案 0 :(得分:0)
问题是您将itemimageview设置为最近单元格内的图像视图,每次绘制一个单元格时,从委托方法中抓取tableview,因此itemimageview将包含tableview绘制的最后一个图像。
为了解决这个问题,您必须确保更新实际点击的单元格的图像视图。我认为最简单的方法是使用Apple的默认单元格imageview cell.image
。或者你可以创建一个UITableViewCell的子类来跟踪和绘制UIImageView。然后,您更改所选单元格中的图像。
无论哪种方式,您都需要跟踪该类中选择的单元格。一种方法是将UITableViewCell selectedCell;
放入.h。然后在您的didSelect方法中selectedCell = [self cellForRowAtIndexPath:indexPath];
,然后在您的图片委托中使用selectedCell.image = image
。
很抱歉,如果这很难理解,对于一个中等复杂的问题,这是一个简短的答案。有很多方法可以解决这个问题。
答案 1 :(得分:0)
您可以按照以下步骤实现此目的: 1.首先,当用户单击一个单元格时,将行号(indexPath.row)存储在整数变量中。 2.一旦从相机获取图像,将其存储在UIImage中。 3.现在你知道要更新的行,你有你的image.Call在didFinishPickingMediaWithInfo委托方法结束时的UITableView的reloadData方法。 4.ReloadData方法随后将调用cellForRowAtIndexPath方法。有这样的条件:
if(indexPath.row==clickedRow){
//Create the imageView here and then assign the image obtained from the camera to it.
imageView.image=cameraImage;
[cell.contentView addSubView:imageView];
} 其中clickedRow是整数变量,用于保存用户在didSelectRowAtIndexPath方法中单击的行号。
希望这有帮助。