如何添加图像到UITableView单元格?

我暂时以编程方式向UITableViewCell添加了一些值。 但是我需要将图像添加到每个单元格。 我怎样才能做到这一点?

这是我的代码。 .h文件

  @interface BidalertsViewController : UIViewController <UITableViewDelegate,UITableViewDataSource> { NSArray *listData; } @property(nonatomic, retain) NSArray *listData; @end 

.m文件

  @synthesize listData; - (void)viewDidLoad { UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(5,0,310,28)]; newView.backgroundColor=[UIColor whiteColor]; UITextView *mytext = [[UITextView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 25.0)]; mytext.backgroundColor = [UIColor clearColor]; mytext.textColor = [UIColor blackColor]; mytext.editable = NO; mytext.font = [UIFont systemFontOfSize:15]; mytext.text = @"Asset Name"; [mytext release]; [newView addSubview:mytext]; [self.view addSubview:newView]; [newView release]; NSArray *array = [[NSArray alloc] initWithObjects:@"iPhone", @"iPod", @"iPad",nil]; self.listData = array; [array release]; [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)dealloc { [listData dealloc]; [super dealloc]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.listData count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease]; } NSUInteger row = [indexPath row]; cell.textLabel.text = [listData objectAtIndex:row]; return cell; UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(3,2, 20, 25)]; imv.image=[UIImage imageNamed:@"user.jpg"]; [cell.contentView addSubview:imv]; [imv release]; } @end 

该代码没有添加图像到单元格。 有什么问题? 我怎样才能将自定义图像添加到单元格?

移动return cell; 在方法的最后:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease]; } NSUInteger row = [indexPath row]; cell.textLabel.text = [listData objectAtIndex:row]; UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(3,2, 20, 25)]; imv.image=[UIImage imageNamed:@"user.jpg"]; [cell.contentView addSubview:imv]; [imv release]; return cell; } 

您可以使用单元格的imageView属性添加图像:

 cell.imageView.image = [UIImage imageNamed:@"user.jpg"]; 

在你的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法。

这里是一个示例单元格在表格单元格中加载facebook图像。

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } // Leave cells empty if there's no data yet if (nodeCount > 0) { // Set up the cell... AppRecord *appRecord = [self.friendsList objectAtIndex:indexPath.row]; cell.textLabel.text = friend.name; // Only load cached images; defer new downloads until scrolling ends if (!appRecord.icon) { // set the url appRecord.imageURLString = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture", friend.recordID]; // request the download if (self.tableView.dragging == NO && self.tableView.decelerating == NO) { [self startIconDownload:appRecord forIndexPath:indexPath]; } // if a download is deferred or in progress, return a placeholder image cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"]; } else { cell.imageView.image = appRecord.icon; } } return cell; 

你添加它的权利,但你雾一件事:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease]; } NSUInteger row = [indexPath row]; cell.textLabel.text = [listData objectAtIndex:row]; UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(3,2, 20, 25)]; imv.image=[UIImage imageNamed:@"user.jpg"]; [cell.contentView addSubview:imv]; [imv release]; //you fogot this: return cell; } 

//为图像视图创build一个矩形框

 UIImageView *iconImage = [[UIImageView alloc] init]; iconImage.frame = CGRectMake(12,4,53.5,53.5); // Create a label for cells UILabel *cellName = [[UILabel alloc] initWithFrame:CGRectMake(75,18,200,20)]; cellName.font = [self fontForBodyTextStyle]; NSString *cellNameStr = [NSString stringWithFormat:@"%@",self.tableCellNames[indexPath.row]]; // Select path row tab actions switch (indexPath.row) { case 0: cellName.text = cellNameStr; iconImage.image = [UIImage imageNamed:@"condition.png"]; [cell.contentView addSubview:iconImage]; [cell.contentView addSubview:cellName]; break; case 1: cellName.text = cellNameStr; iconImage.image = [UIImage imageNamed:@"videos.png"]; [cell.contentView addSubview:iconImage]; [cell.contentView addSubview:cellName]; break; case 2: cellName.text = cellNameStr; iconImage.image = [UIImage imageNamed:@"provider.png"]; [cell.contentView addSubview:iconImage]; [cell.contentView addSubview:cellName]; break; case 3: cellName.text = cellNameStr; iconImage.image = [UIImage imageNamed:@"info.png"]; [cell.contentView addSubview:iconImage]; [cell.contentView addSubview:cellName]; break; default: NSAssert(NO, @"Unhandled value in cellForRowAtIndexPath"); break; } 

感谢VKJ,