当我滚动它时,我的 tableview 会滞后。我使用了自定义单元格,因为单元格中有许多内容视图。但是当我滚动表格视图时它滚动不顺畅。我没有得到我的编码中的问题,请帮助我找到问题。这是我的代码:
static NSString *CellIdentifier = @"Cell1";
CustomTableViewCell *cell = (CustomTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.backgroundColor=[UIColor blackColor];
cell.frame = CGRectMake(0.0, 0.0, 320.0, 200.0);
UITapGestureRecognizer *tap1 =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handlefirstTap:)];
tap1.delegate=self;
tap1.numberOfTapsRequired=1;
[cell.image1 addGestureRecognizer:tap1];
[tap1 release];
UITapGestureRecognizer *tap2 =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handlesecondTap:)];
tap2.delegate=self;
tap2.numberOfTapsRequired=1;
[cell.image2 addGestureRecognizer:tap2];
[tap2 release];
}
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.image1 setTag:indexPath.row*2];
[cell.image2 setTag:indexPath.row*2+1];
NSString *checkfirstcat=[[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"category"];
NSString *checksecondcat=[[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"category"];
for (int i = 0; i < [categories count]; i++) {
if ([checkfirstcat isEqualToString:[categories objectAtIndex:i]]) {
cell.first.backgroundColor=[uniquecolors objectAtIndex:i];
cell.veryfirst.backgroundColor=[uniquecolors objectAtIndex:i];
break;
}
}
for (int i = 0; i < [categories count]; i++) {
if ([checksecondcat isEqualToString:[categories objectAtIndex:i]]) {
cell.second.backgroundColor=[uniquecolors objectAtIndex:i];
cell.verysecond.backgroundColor=[uniquecolors objectAtIndex:i];
break;
}
}
cell.veryfirst.text= [NSString stringWithFormat:@" %@",[[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"rank"]];
cell.first.text=[NSString stringWithFormat:@" %@",[[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"category"]];
cell.verysecond.text=[NSString stringWithFormat:@" %@", [[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"rank"]];
cell.second.text=[NSString stringWithFormat:@" %@",[[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"category"]];
UIActivityIndicatorView *spinner1 =[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner1.frame = CGRectMake(55, 55, 40, 40);
[cell.contentView addSubview:spinner1];
[spinner1 startAnimating];
UIActivityIndicatorView *spinner2 = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner2.frame = CGRectMake(220, 55, 40, 40);
[cell.contentView addSubview:spinner2];
[spinner2 startAnimating];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0ul);
dispatch_async(queue, ^{
NSString *pathimage1 = [[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"image"];
NSString *pathimage2 = [[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"image"];
dispatch_sync(dispatch_get_main_queue(), ^{
[cell.image1 setImageWithURL:[NSURL URLWithString:pathimage1] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(UIImage *image, BOOL cached){
[spinner1 stopAnimating];
} failure:^(NSError *error) {
[spinner1 stopAnimating];
}];
[cell.image2 setImageWithURL:[NSURL URLWithString:pathimage2] success:^(UIImage *image, BOOL cached) {
[spinner2 stopAnimating];
} failure:^(NSError *error) {
[spinner2 stopAnimating];
}];
});
});
cell.btn1.tag=indexPath.row*2;
cell.btn2.tag=indexPath.row*2+1;
[cell.btn1 setTitle:[[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"total_like"] forState:UIControlStateNormal];
[cell.btn2 setTitle:[[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"total_like"] forState:UIControlStateNormal];
NSString *btn1status=[[aroundmearray objectAtIndex:indexPath.row*2]objectForKey:@"like_stat"];
NSString *btn2status=[[aroundmearray objectAtIndex:indexPath.row*2+1]objectForKey:@"like_stat"];
if (![btn1status isEqualToString:@"false"]) {
[cell.btn1 setImage:[UIImage imageNamed: @"fav-icon.png"] forState:UIControlStateNormal];
}
else
{
[cell.btn1 setImage:[UIImage imageNamed: @"fav.png"] forState:UIControlStateNormal];
}
if (![btn2status isEqualToString:@"false"]) {
[cell.btn2 setImage:[UIImage imageNamed: @"fav-icon.png"] forState:UIControlStateNormal];
}
else
{
[cell.btn2 setImage:[UIImage imageNamed: @"fav.png"] forState:UIControlStateNormal];
}
[cell.btn1 addTarget:self action:@selector(like1:) forControlEvents:UIControlEventTouchUpInside];
[cell.btn2 addTarget:self action:@selector(like2:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}