gpt4 book ai didi

ios - tableViewController 不同单元格中的不同图像无法正常工作

转载 作者:行者123 更新时间:2023-11-29 11:01:55 25 4
gpt4 key购买 nike

我做了一个tableViewController。我想为第一个和第七个索引单元格提供不同的图像。这是我的 cellForRowAtIndexPath 委托(delegate)方法中的代码片段。它在开始时正确地初始化了单元格,但是当我上下滚动几次时,它也开始在其他单元格的附件 View 中给出“button4.png”。

                UIImage *indicatorImage;
if(indexPath.row==0||indexPath.row==6)
{
indicatorImage = [UIImage imageNamed:@"button4.png"];
}
else
{
indicatorImage = [UIImage imageNamed:@"img-arrow.png"];
}

cell.accessoryView =
[[UIImageView alloc]
initWithImage:indicatorImage];

这可能是什么原因?

函数的完整代码有点乱,我贴在这里:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
selection=self.tabBarController.selectedIndex;
static NSString *CellIdentifier = @"Cell";
UILabel *topLabel;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UIImage *indicatorImage;



if(indexPath.row==0||indexPath.row==6)
{
indicatorImage = [UIImage imageNamed:@"button4.png"];
}
else
{
indicatorImage = [UIImage imageNamed:@"img-arrow.png"];
}

cell.accessoryView =
[[UIImageView alloc]
initWithImage:indicatorImage];

cell.accessoryView =
[[UIImageView alloc]
initWithImage:indicatorImage];
const CGFloat LABEL_HEIGHT = 20;



topLabel =
[[UILabel alloc]
initWithFrame:
CGRectMake(
2.0 * cell.indentationWidth,
0.5 * (tableView.rowHeight - 2 * LABEL_HEIGHT),
tableView.bounds.size.width -
4.0 * cell.indentationWidth
- indicatorImage.size.width,
LABEL_HEIGHT)];

[cell.contentView addSubview:topLabel];

topLabel.backgroundColor = [UIColor clearColor];
topLabel.shadowColor = [UIColor whiteColor];
topLabel.shadowOffset = CGSizeMake(0, 1);
topLabel.textColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
topLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];

topLabel.tag=10;
cell.backgroundView =
[[UIImageView alloc] init];
cell.selectedBackgroundView =
[[UIImageView alloc] init];

}
}
else
{
topLabel = (UILabel *)[cell viewWithTag:10];
}

UIImage *rowBackground;
UIImage *selectionBackground;


rowBackground = [UIImage imageNamed:@"topAndBottomRow.png"];
selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];


if(indexPath.row==0||indexPath.row==6)
{

rowBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];
selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];

topLabel.textColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
topLabel.font = [UIFont systemFontOfSize:20];
}


((UIImageView *)cell.backgroundView).image = rowBackground;
((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;


NSString *object = _objects[indexPath.row];
NSString *str=[object description];
topLabel.text=[NSString stringWithFormat:@" %@",str];

return cell;

最佳答案

您在创建和配置单元格的 if (cell == nil) ... block 中设置此图像。但是您需要将此图像设置移到 if block 之外,因为如果单元格被重用(即您不必 allocinit),旧图像将被重新使用。您应该检查 if 语句中的任何内容,以了解应该逐个单元更改的内容,并将其移出 if block 。

关于ios - tableViewController 不同单元格中的不同图像无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com