How to add images to UITableView cell?

匿名 (未验证) 提交于 2019-12-03 02:52:02

问题:

I temporarly added some values to the UITableViewCell programmatically. But I need to add images to each cell. How can I do that?

Here is my code. .h file

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

.m file

 @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 

The code didn't add images to the cell. What's the problem? How can I do to add custom image to cell?

回答1:

Move return cell; at the end of the method:

- (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; } 


回答2:

You can add images using the imageView property of a cell:

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

in your - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath method.



回答3:

Here's an example cell loading a facebook image in a table cell.

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; 


回答4:

you adding it right, but you fogot one thing:

- (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;      } 


回答5:

// create a rectangle box for image view

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; } 

Thank VKJ,



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!