我有一个带有自定义单元格的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上做到这一点。
答案 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];