gpt4 book ai didi

滚动时 iPhone UITableView 生涩

转载 作者:行者123 更新时间:2023-11-28 19:21:36 27 4
gpt4 key购买 nike

我正在将我的表格从 XML 提要加载到数组中,然后创建单元格,如下面的代码所示。加载时有时会非常不稳定。我以为那只是我滚动时下载的图像,但我删除了它们进行测试,有时它仍然不稳定。无法弄清楚我做错了什么!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

const NSInteger BOTTOM_LABEL_TAG = 1002;
const NSInteger TEXT_FIELD_TAG = 1003;

UILabel *Labelcompanyname;
UILabel *Labeldistance;

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{

cell =
[[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier]
autorelease];


const CGFloat LABEL_HEIGHT = 15;


int spaceSize;

if(currentType == @"categorySearch"){

spaceSize = 57;
}
else {

spaceSize = 34;
}


Labelcompanyname =
[[[UILabel alloc]
initWithFrame:
CGRectMake(
spaceSize + 2.0 * cell.indentationWidth,
0.5 * (tableView.rowHeight - 2 * LABEL_HEIGHT)+10,
tableView.bounds.size.width -
spaceSize - 20.0,
LABEL_HEIGHT)]
autorelease];
[cell.contentView addSubview:Labelcompanyname];


Labeldistance =[[[UILabel alloc]
initWithFrame:
CGRectMake(
spaceSize + 2.0 * cell.indentationWidth,
0.5 * (tableView.rowHeight - 2 * LABEL_HEIGHT)+40,
tableView.bounds.size.width -
spaceSize - 20.0,
LABEL_HEIGHT)]
autorelease];
if(currentType == @"categorySearch") {
[cell.contentView addSubview:Labeldistance];

}


Labelcompanyname.tag = BOTTOM_LABEL_TAG;
Labelcompanyname.font = [UIFont systemFontOfSize:[UIFont labelFontSize] - 2];

Labeldistance.tag = TEXT_FIELD_TAG;
Labeldistance.font = [UIFont systemFontOfSize:[UIFont labelFontSize] - 2];

cell.backgroundView = [[[UIImageView alloc] init] autorelease];
cell.selectedBackgroundView = [[[UIImageView alloc] init] autorelease];
cell.textLabel.numberOfLines=0;

}
else
{
Labelcompanyname = (UILabel *)[cell viewWithTag:BOTTOM_LABEL_TAG];
Labeldistance = (UILabel *)[cell viewWithTag:TEXT_FIELD_TAG];

}

PromotionObject *newObj1;
newObj1=[totalArray objectAtIndex:indexPath.row];

if(!newObj1.furtherURL){

Labelcompanyname.text =[NSString stringWithFormat:@"%@", newObj1.companyname];
Labeldistance.text =newObj1.distance;
}
else
{
Labelcompanyname.text =[NSString stringWithFormat:@"Load more results"];
Labeldistance.text =@"";
}



NSURL *Imageurl = [NSURL URLWithString:[NSString stringWithFormat:@"%@", newObj1.locImage]];
NSData *data = [NSData dataWithContentsOfURL:Imageurl];
UIImage *img = [[[UIImage alloc] initWithData:data] autorelease];

if(currentType == @"categorySearch"){

cell.imageView.image = img;

} else if(currentType == @"fullSearch") {

cell.imageView.image = [UIImage imageNamed:@"newmap.png"];

} else {

cell.imageView.image = [UIImage imageNamed:@"business.png"];

}


cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

任何帮助将不胜感激

汤姆

最佳答案

您绝对不应该在加载单元格时做任何会长时间阻塞 UI 线程的事情。例如。 NSData *data = [NSData dataWithContentsOfURL:Imageurl];.

我建议在后台将您的图像加载到数据源中,并在下载数据后重新加载/更新表格/单元格。为您的图像实现缓存也很好,这样您就不必在每次加载单元格时都重新下载它们。

如果您需要有关异步图像加载的帮助,请进行搜索。 SO 上有很多东西。

关于滚动时 iPhone UITableView 生涩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505305/

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