问题描述
- 滚动UITableview改变UIbutton的图片
- 有一个UITableView,然后添加了一个自定义视图作为UIButton。每个button都有一个tag,在动作方法中获取tag,当点击按钮时,会改变选中和取消按钮的图片,问题是,等到我滚动它时,又回复了正常状态。
这是索引方法中cell的行。
static NSString *CellIdentifier = @""Cell4"";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil){ cell = [self tableviewCellWithReuseIdentifierFollowing:CellIdentifier];}followingButton = [UIButton buttonWithType:UIButtonTypeCustom];[followingButton addTarget:self action:@selector(followingButtonpressed:)forControlEvents:UIControlEventTouchUpInside];[followingButton setImage:[UIImage imageNamed:@""following12.png""] forState:UIControlStateNormal];followingButton.frame = CGRectMake(220.0 20.0 100 40.0);[cell.contentView addSubview:followingButton];NSLog(@""row--%d""indexPath.row);followingButton.tag=indexPath.row;NSLog(@""followingButton.tag--%d""followingButton.tag);[self configureCellFollowing:cell forIndexPath:indexPath];return cell;}==================//Here is the action method-(void)followingButtonpressed:(id)sender{ NSLog(@""sender tag --%d""[sender tag]); UIButton *btnPly = (UIButton *)sender; if([btnPly isSelected]) { [btnPly setSelected:NO]; [btnPly setImage:[UIImage imageNamed:@""following12.png""] forState:UIControlStateNormal]; } else { [btnPly setSelected:YES]; [btnPly setImage:[UIImage imageNamed:@""following_off12.png""] forState:UIControlStateNormal]; }}
解决方案
这是因为每次你滚动的时候就会调用:
[followingButton setImage:[UIImage imageNamed:@""following12.png""] forState:UIControlStateNormal];
因此改为下面的代码就解决了:
static NSString *CellIdentifier = @""Cell4"";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil){ cell = [self tableviewCellWithReuseIdentifierFollowing:CellIdentifier];followingButton = [UIButton buttonWithType:UIButtonTypeCustom];[followingButton addTarget:self action:@selector(followingButtonpressed:)forControlEvents:UIControlEventTouchUpInside];[followingButton setImage:[UIImage imageNamed:@""following12.png""] forState:UIControlStateNormal];followingButton.frame = CGRectMake(220.0 20.0 100 40.0);[cell.contentView addSubview:followingButton];[self configureCellFollowing:cell forIndexPath:indexPath];}return cell;}
解决方案二:
这段代码新建了cell:
NSString *CellIdentifier = [NSString stringWithFormat:@""S%1dR%1d""indexPath.sectionindexPath.row];UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
时间: 2024-12-23 03:31:21