我有一个大约 100 行的 UITableView 。
每个单元格都有选中的图像,但是当我们滚动 UITableView 时,所有单元格都在未选中的单元格中重叠。
(UITableViewCell *)tableViewUITableView *)tableView
cellForRowAtIndexPathNSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"Cell";
static NSString *MyIdentifierAds = @"Cell1";
UITableViewCell *cell ;
if (tableView==self.tblSeachMarketplace) {
if (indexPath.section==0) {
cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
// if(cell== nil)
// {
// cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
// }
UILabel* lblTitle = (UILabel *)[cell viewWithTag:200];
UILabel*lblSubheading = (UILabel *)[cell viewWithTag:300];
UIImageView* imgRating = (UIImageView *)[cell viewWithTag:400];
UIImageView* imgLogo = (UIImageView *)[cell viewWithTag:100];
[lblTitle setFont:[UIFont fontWithName"Lato-Bold" size:12.5f]];
[lblSubheading setFont:[UIFont fontWithName"Lato-Bold" size:9.0f]];
[lblTitle setFont:[UIFont fontWithName"Lato-Bold" size:12.5f]];
[lblSubheading setFont:[UIFont fontWithName"Lato-Bold" size:9.0f]];
[lblTitle setTextColor:[Global colorFromHexString"#4394d4"]];
NSDictionary*row=[[NSDictionary alloc]init];
cell.contentView.backgroundColor = [UIColor whiteColor];
if (allMarketPlaceNewsletters.count>0) {
row=[allMarketPlaceNewsletters objectAtIndex:indexPath.row];
NSString *imgUrl=[row valueForKey"logo"];
if (imgUrl != (id)[NSNull null]) {
NSURL *urlTemp = [NSURL URLWithString:imgUrl];
[imgLogo setImageWithURL:urlTemp placeholderImage:[UIImage imageNamed"placeholder.jpg"]];
}
UIButton *btnLocationRight=(UIButton *)[cell viewWithTag:600];
UIButton *btnLocationPlus=(UIButton *)[cell viewWithTag:500];
if ([[row valueForKey"subscribed"] isEqualToString"Y"]) {
[btnLocationRight setHidden:NO];
[btnLocationPlus setHidden:YES];
cell.contentView.backgroundColor = [Global colorFromHexString"#f0f9fc"];
[btnLocationRight setImage:[UIImage imageNamed:@"righbtn.png"] forState:UIControlStateNormal];
[btnLocationRight setTag:indexPath.row];
// [btnLocationRight addTarget:self action:@selector(ButtonPressed forControlEvents:UIControlEventTouchUpInside];
// [cell addSubview:[self buttonWithMap:cell :@"righbtn.png":indexPath.row]];
}else{
cell.contentView.backgroundColor = [UIColor whiteColor];
[btnLocationPlus setTag:indexPath.row];
[btnLocationPlus addTarget:self action:@selector(ButtonPressed forControlEvents:UIControlEventTouchUpInside];
[btnLocationPlus setImage:[UIImage imageNamed:@"darkplusbtn.png"] forState:UIControlStateNormal];
[btnLocationRight setHidden:YES];
[btnLocationPlus setHidden:NO];
// [cell addSubview:[self buttonWithMap:cell :@"darkplusbtn.png" :indexPath.row]];
}
NSString *stars=[NSString stringWithFormat:@"%d.png",[[row valueForKey:@"rating"] intValue]];
imgRating.image=[UIImage imageNamed:stars];
}
Best Answer-推荐答案 strong>
在 cellForRowAtIndexPath 中添加此代码
NSArray *subviews = [[NSArray alloc] initWithArray:cell.contentView.subviews];
for (UIView *subview in subviews)
{
if([subview isKindOfClass:[UIView class]])
[subview removeFromSuperview];
else if([subview isKindOfClass:[UIImageView class]])
[subview removeFromSuperview];
else if([subview isKindOfClass:[UILabel class]])
[subview removeFromSuperview];
else if([subview isKindOfClass:[UIImage class]])
[subview removeFromSuperview];
else if([subview isKindOfClass:[UIButton class]])
[subview removeFromSuperview];
}
[subviews release];
希望这会对您有所帮助。在此先感谢您。
关于ios - 为什么 UITableView 单元格在滚动时重叠?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/20118286/
|