表格视图单元格的按钮与其他单元格混淆?

Posted

技术标签:

【中文标题】表格视图单元格的按钮与其他单元格混淆?【英文标题】:Table view cell's button messes with other cells? 【发布时间】:2011-10-12 00:29:33 【问题描述】:

好的,我有一个可以添加和删除单元格的表格视图。对于添加的每个单元格,它会在单元格中获得两个按钮,一个添加和减去按钮,该按钮从单元格的 textLabel 中添加 1 和 subs 1。但是当我按下 1 个单元格按钮时,它会从另一个单元格 textLabel 中替代。这是我的cellForRow 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    
(NSIndexPath *)indexPath

static NSString *CellIdentifier = @"Cell";

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   
reuseIdentifier:CellIdentifier];
 
cell.imageView.image = [imageArray objectAtIndex:indexPath.row];    
cell.textLabel.text = [cells objectAtIndex:indexPath.row];

newBtn = [[UIButton alloc]init];
newBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[newBtn setFrame:CGRectMake(195,20,55,35)];
[newBtn addTarget:self action:@selector(subtractLabelText:)   
forControlEvents:UIControlEventTouchUpInside];
[newBtn setTitle:@"-" forState:UIControlStateNormal];
[cell addSubview:newBtn];

return cell;

下一个方法是我连接到减法按钮的方法:

- (IBAction)subtractLabelText:(id)sender

if ( [[cell.textLabel text] intValue] == 0) 
[newBtn setEnabled:NO];

else
cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text  
intValue] -1];
    

请帮忙!!非常感谢! :D

【问题讨论】:

【参考方案1】:

您应该将单元格作为subtractLabelText: 的参数传递,否则此函数不知道它访问的是哪个单元格。


我想到的最简单的事情是在定义单元格的行中添加:

- (IBAction)subtractLabelText:(id)sender

UITableViewCell *cell = (UITableViewCell*)[sender superview]; // <-- ADD THIS LINE

if ( [[cell.textLabel text] intValue] == 0) 
[newBtn setEnabled:NO];

else
cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text  
intValue] -1];
    

【讨论】:

在编码方面我很笨,哦!好的,如果我的单元格名称是单元格,我应该如何编写参数?像 -(void)subtractLabelText:(UITableViewCell *)cell?还是有其他方法?非常感谢!! :D

以上是关于表格视图单元格的按钮与其他单元格混淆?的主要内容,如果未能解决你的问题,请参考以下文章

选择其中一个时更改其他表格视图单元格的数据

滚动单元格时表格视图设置消失

表格视图按钮索引单元格

在表格视图单元格中使用按钮出列单元格

检查每个单元格的条件

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组