Ios UITableViewCell背景图像设置
我尝试将背景图像添加到我的Ios UITableViewCell背景图像设置,ios,objective-c,cocoa-touch,uitableview,Ios,Objective C,Cocoa Touch,Uitableview,我尝试将背景图像添加到我的UITableViewCell。 这是我正在使用的代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"TableCell"; // Dequeue or create a cell of the appropriat
UITableViewCell
。
这是我正在使用的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"TableCell";
// Dequeue or create a cell of the appropriate type.
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.backgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
[cell.preparationLabel setFont:[UIFont fontWithName:@"Bold" size:20]];
// Configure the cell.
if (btnselected==1)
{
cell.preparationLabel.text = [recipe.ingredients objectAtIndex:indexPath.row];
}
else
{
cell.preparationLabel.text = [recipe.preparation objectAtIndex:indexPath.row];
}
return cell;
}
我的问题是,在运行应用程序并选择tableview时,它首先显示具有默认白色背景的表格单元格,过一段时间后,单元格背景将更改为所需图像…我不知道为什么要花很长时间才能加载具有所需单元格背景的表格视图。加载缓慢是因为您每次都将
UIImageView
添加到单元格中而不仅仅是在创建一个新的
按如下方式更改代码:
// Dequeue or create a cell of the appropriate type.
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.backgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
}
你得走了
cell.backgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cellbg.jpeg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
在if(cell==nil).
条件之后的行。否则,单元格只有在循环使用后才能获得新的背景,而新创建的单元格仍然没有背景。请参考答案,这将对您有所帮助
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
UIImageView *imgView1 = [[UIImageView alloc]init];..continue...
UIImageView *imgView2 = [[UIImageView alloc]init];..continue...
[cell.backgroundView addSubView:imgView1];
[cell.selectedBackgroundView addSubView:imgView2];
cell = [nib objectAtIndex:0];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
UIImageView *ivwCellHighlighted = [[UIImageView alloc]initWithImage:[UIImage imageNamed:CELL_SELECTEDIMAGE]];
[ivwCellHighlighted setFrame:CGRectMake(1, 1, 320, 47)];
[cell setSelectedBackgroundView:ivwCellHighlighted];
[ivwCellHighlighted release];
ivwCellHighlighted=nil;
}