TableViewCell 中的更改立即生效

Change in TableViewCell to take effect immediately

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

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

方法里面(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath我有行

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

然后在 onMyBtnTapped 方法中我实现了颜色变化。

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

多一点

我已经使用 [self.tableView cellForRowAtIndexPath:indexPath]; 获得了单元格。但是现在我有了单元格,我不知道如何让它重新绘制自己。我一直在 android 上这样做。我不确定如何在 iOS.

上执行此操作

您可以在单击按钮时重新加载 UITableViewCell:

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

您应该可以将以下内容放入方法中。

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

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

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