在cellForRowAtIndexPath中更改按钮状态

时间:2009-12-23 00:40:47

标签: iphone uitableview

现在这让我感到很疯狂..我有一个UItableview。基于NSMutableArray,我填充它。 我使用以下

reuseTableViewCellWithIdentifier中进行了设置
cellRectangle = CGRectMake((ARROW_OFFSET + 5), (ROW_HEIGHT - LABEL_HEIGHT) / 2.0, ARROW_WIDTH, LABEL_HEIGHT);
UIButton *tmpButton = [[UIButton alloc] initWithFrame:cellRectangle];
[tmpButton initWithFrame:cellRectangle];
[tmpButton setImage:[UIImage imageNamed:@"icon_edit.png"] forState:UIControlStateNormal];
[tmpButton setImage:[UIImage imageNamed:@"icon_no.png"] forState:UIControlStateDisabled];
[tmpButton addTarget:self action:@selector(editSelectedRow:) forControlEvents:UIControlEventTouchUpInside];  
tmpButton.tag = ARROW_TAG;
[cell.contentView addSubview: tmpButton];
[tmpButton release];

然后在cellForRowAtIndexPath中我有以下代码行

UIButton *button = (UIButton *)[cell viewWithTag:ARROW_TAG];
[button setTag:indexPath.row];

if (counterHasStarted == 1) {
    NSLog(@"yes");
    button.enabled = NO;
} else {
    button.enabled = YES;
}

按钮显示很好,但出于某种原因,当counterHasStarted变量(设置为int时,它不会改变!我可以根据上面的代码更改UILabel(检查counterHasChanged是1还是0)。 / p>

任何想法发生了什么?

1 个答案:

答案 0 :(得分:2)

-cellForRowAtIndexPath:只有在表视图需要新的UITableViewCell时才会被调用,因为用户滚动了。

我猜你正在改变counterHasStarted并期望按钮启用状态改变?您可以在更改counterHasStarted([yourTableView reloadData])时重新加载数据。然后,表格视图将为当前可见的所有单元格调用-cellForRowAtIndexPath:,您可以根据需要启用或禁用按钮。