现在这让我感到很疯狂..我有一个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>
任何想法发生了什么?
答案 0 :(得分:2)
-cellForRowAtIndexPath:
只有在表视图需要新的UITableViewCell时才会被调用,因为用户滚动了。
我猜你正在改变counterHasStarted并期望按钮启用状态改变?您可以在更改counterHasStarted([yourTableView reloadData]
)时重新加载数据。然后,表格视图将为当前可见的所有单元格调用-cellForRowAtIndexPath:
,您可以根据需要启用或禁用按钮。