我在 UITableViewCell 中有两个按钮和一个标签,名为 +、- 和 countLabel。
初始 countLabel 应为 0。当我单击 + 按钮时,countLabel 为单击的单元格增加 1,当我单击 - 按钮时,countLabel 为单击的单元格减少 -1。它工作正常。
但我的问题是当我滚动表格视图时..countLabel 文本显示在表格视图的所有单元格中。
我试过这个?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"productListCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSString *title;
UILabel *productNameLbl;
UILabel *countLbl;
NSMutableDictionary *productListCellDit;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
productNameLbl =[[UILabel alloc]init];
[productNameLbl setFrame:CGRectMake(53, 2, 120, 59)];
[productNameLbl setTextColor:[UIColor blackColor]];
[productNameLbl setBackgroundColor:[UIColor clearColor]];
[productNameLbl setTextAlignment:NSTextAlignmentLeft];
[productNameLbl setFont:[UIFont boldSystemFontOfSize:15.0]];
productNameLbl.lineBreakMode=NSLineBreakByWordWrapping;
productNameLbl.numberOfLines=3;
productNameLbl.tag=2;
[cell.contentView addSubview:productNameLbl];
countLbl =[[UILabel alloc]init];
[countLbl setFrame:CGRectMake(56, 60, 117, 12)];
[countLbl setTextColor:[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1.0]];
[countLbl setBackgroundColor:[UIColor clearColor]];
[countLbl setTextAlignment:NSTextAlignmentLeft];
[countLbl setFont:[UIFont boldSystemFontOfSize:15.0]];
countLbl.tag=3;
[cell.contentView addSubview:countLbl];
decreaseBtn =[UIButton buttonWithType:UIButtonTypeCustom];
[decreaseBtn setTitle:@"-" forState:UIControlStateNormal];
[decreaseBtn setTitleColor:[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1.0] forState:UIControlStateNormal];
[decreaseBtn setTitleColor:[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1.0] forState:UIControlStateHighlighted];
[[decreaseBtn titleLabel] setFont:[UIFont boldSystemFontOfSize:23]];
[decreaseBtn setFrame:CGRectMake(259, 2, 30, 71)];
decreaseBtn.tintColor=[UIColor lightGrayColor];
decreaseBtn.tag=indexPath.row;
[decreaseBtn setBackgroundImage:[UIImage imageNamed:@"-+BtnImg.png"] forState:UIControlStateNormal];
[decreaseBtn addTarget:self action:@selector(decreaseItemCount:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:decreaseBtn];
increaseBtn =[UIButton buttonWithType:UIButtonTypeCustom];
[increaseBtn setTitle:@"+" forState:UIControlStateNormal];
[increaseBtn setTitleColor:[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1.0] forState:UIControlStateNormal];
[increaseBtn setTitleColor:[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1.0] forState:UIControlStateHighlighted];
[[increaseBtn titleLabel] setFont:[UIFont boldSystemFontOfSize:23]];
[increaseBtn setFrame:CGRectMake(289, 2, 30, 71)];
increaseBtn.tintColor=[UIColor lightGrayColor];
increaseBtn.tag=indexPath.row;
[increaseBtn setBackgroundImage:[UIImage imageNamed:@"-+BtnImg.png"] forState:UIControlStateNormal];
[increaseBtn addTarget:self action:@selector(increaseItemCount:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:increaseBtn];
} else {
productNameLbl =(UILabel *)[cell.contentView viewWithTag:2];
countLbl =(UILabel *)[cell.contentView viewWithTag:3];
decreaseBtn =(UIButton *)[cell.contentView viewWithTag:indexPath.row];
increaseBtn =(UIButton *)[cell.contentView viewWithTag:indexPath.row];
}
productListCellDit=[productListArry objectAtIndex:indexPath.row];
title= [productListCellDit objectForKey:@"name"];
productNameLbl.text=title;
countLbl.text = [[NSString alloc] initWithFormat:@"%d",showItemCount];
return cell;
}
//to increment count
-(void)increaseItemCount:(UIButton *)sender
{
UITableViewCell *cell = (UITableViewCell *)sender.superview.superview;
NSIndexPath *path = [listOfProductsTable indexPathForCell:cell];
NSLog(@"row: %d",path.row);
UILabel *countLbl =(UILabel *)[cell.contentView viewWithTag:3];
showItemCount=[countLbl.text intValue] + 1;
NSLog(@"%d",showItemCount);
countLbl.text = [[NSString alloc] initWithFormat:@"%d",showItemCount];
}
//to decrement count
-(void)decreaseItemCount:(UIButton *)sender
{
if (!showItemCount==0) {
UITableViewCell *cell = (UITableViewCell *)sender.superview.superview;
NSIndexPath *indexPath = [listOfProductsTable indexPathForCell:cell];
NSLog(@"row: %d",indexPath.row);
UILabel *countLbl =(UILabel *)[cell.contentView viewWithTag:3];
showItemCount=[countLbl.text intValue] - 1;
NSLog(@"%d",showItemCount);
countLbl.text = [[NSString alloc] initWithFormat:@"%d",showItemCount];
}
}
在 ViewDidLoad
showItemCount=0