我在UITableViewCell的每个单元格中添加了一个自定义按钮。该按钮的类型为custom.I已将图像添加到此按钮。当用户选择此按钮时,其图像将被更改。但这些按钮的图像是重叠的。以下是我的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CountryCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
// Configure the cell...
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.selectionStyle = UITableViewCellSelectionStyleNone ;
cell.textLabel.text = [[_listArray objectAtIndex:indexPath.row] wish];
cell.textLabel.textColor = [UIColor whiteColor];
CustomWishButton *newBtn = [CustomWishButton buttonWithType:UIButtonTypeCustom];
[newBtn setFrame:CGRectMake(280,5,35,34)];
cell.textLabel.font = [UIFont fontWithName:@"Times New Roman" size:21];
newBtn.customString = [[_listArray objectAtIndex:indexPath.row] wish] ;
newBtn.customStatus = [[_listArray objectAtIndex:indexPath.row] status];
newBtn.imageName = [[_listArray objectAtIndex:indexPath.row]imageName];
[newBtn setImage:[UIImage imageNamed:newBtn.imageName] forState:UIControlStateNormal];
[newBtn addTarget:self action:@selector(changeStatus:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:newBtn];
return cell;
}
-(void)changeStatus:(id)sender{
CustomWishButton *resultButton= (CustomWishButton*)sender;
if ([resultButton.imageName isEqualToString:@"cancel.png"]) {
NSString *wish = resultButton.customString;
NSLog(@"wish: %@",wish);
[sql updateData:wish:1:@"tick.png"];
}
else{
NSString *wish = resultButton.customString;
[sql updateData:wish:0:@"cancel.png"];
}
_listArray = [sql getList];
[wishTableView reloadData];
}
答案 0 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"CountryCell%d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//CustomWishButton shouldn't add each and everytime! So why I kept inside.
CustomWishButton *newBtn = [CustomWishButton buttonWithType:UIButtonTypeCustom];
[newBtn setFrame:CGRectMake(280,5,35,34)];
cell.textLabel.font = [UIFont fontWithName:@"Times New Roman" size:21];
newBtn.customString = [[_listArray objectAtIndex:indexPath.row] wish] ;
newBtn.customStatus = [[_listArray objectAtIndex:indexPath.row] status];
newBtn.imageName = [[_listArray objectAtIndex:indexPath.row]imageName];
[newBtn setImage:[UIImage imageNamed:newBtn.imageName] forState:UIControlStateNormal];
[newBtn addTarget:self action:@selector(changeStatus:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:newBtn];
}
// Configure the cell...
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.selectionStyle = UITableViewCellSelectionStyleNone ;
cell.textLabel.text = [[_listArray objectAtIndex:indexPath.row] wish];
cell.textLabel.textColor = [UIColor whiteColor];
return cell;
}
//instead of (id) reference I make it your CustomWishButton reference
-(void)changeStatus:(CustomWishButton *)resultButton
{
if ([resultButton.imageName isEqualToString:@"cancel.png"])
{
NSString *wish = resultButton.customString;
NSLog(@"wish: %@",wish);
[sql updateData:wish:1:@"tick.png"];
}
else
{
NSString *wish = resultButton.customString;
[sql updateData:wish:0:@"cancel.png"];
}
//Change image as per your condition
[resultButton setImage:[UIImage imageNamed:NewImageName] forState:UIControlStateNormal];
_listArray = [sql getList];
[wishTableView reloadData];
}