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];
我有一个带有自定义单元格的 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];