TableViewCell中的更改立即生效

时间:2015-02-25 19:24:37

标签: ios iphone uitableview uibutton

我有一个带有自定义单元格的TableView。单元格中的一个子视图是UIButton。当用户点击按钮时,我希望更改背景。我得到了所有这些。但问题是,在我将受影响的单元格从屏幕上滚动然后在屏幕上返回之前,我看不到更改。但我想立即看到变化,没有屏幕上的屏幕外位。我怎么能这样做?

有关我的实施的更多信息:

在方法(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath内,我有一行

....
[cell.myBtn addTarget:self action:@selector(onMyBtnTapped:) forControlEvents:UIControlEventTouchUpInside];

然后在onMyBtnTapped方法中,我会影响颜色变化。

所以也许我需要做的是从父视图控制器(?)重绘特定的单元格。

多一点

我已经使用[self.tableView cellForRowAtIndexPath:indexPath];获取单元格了。但是现在我有了这个细胞,我不知道怎么让它重绘自己。我一直在android上做这个。我不知道如何在iOS上做到这一点。

3 个答案:

答案 0 :(得分:2)

您可以点击按钮重新加载UITableViewCell:

[self.tableView reloadRowsAtIndexPaths:@[indexPathOfGivenCell] withRowAnimation:UITableViewRowAnimationNone];

答案 1 :(得分:1)

您应该能够在方法中放置以下内容。

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

答案 2 :(得分:0)

您可以要求在可见行重绘单元格:

NSArray *visibleIndexPaths       = [tableView indexPathsForVisibleRows];
[self.tableView reloadRowsAtIndexPaths:visibleIndexPaths withRowAnimation: UITableViewRowAnimationFade];