【发布时间】:2014-02-19 01:05:56
【问题描述】:
我的UITableViewController 出现了一些奇怪的行为。
我对 UITableViewCell 进行了子类化,并在其中创建了自己的“已访问”属性。
- (void)setVisited:(BOOL)visited animated:(BOOL)animated
{
[self setVisited:visited];
...
}
当我在tableView:cellForRowAtIndexPath:(我创建它的唯一地方)中创建单元格时,我设置了这个属性,如下所示:
if (cell == nil) {
cell = [[ArticleListViewCell alloc] initWithReuseIdentifier:CellIdentifier art:art index:indexPath.row];
[cell setVisited:NO animated:NO];
}
后来,在tableView:didSelectRowAtIndexPath:,我将此属性设置为YES:
ArticleListViewCell *cell = (ArticleListViewCell *) [tableView cellForRowAtIndexPath:indexPath];
[cell setVisited:YES animated:NO];
但是,当我选择一个单元格然后返回到当前有 10 个单元格的 UITableView 时,我发现不仅我选择的单元格“已访问”,而且另一个单元格也有。很难解释,但如果我选择第 1 个单元格,第 7 个单元格也会被访问,如果我选择第 2 个单元格,第 8 个单元格也会被访问,依此类推。有谁知道这是为什么,以及我应该如何解决它?
我检查了this question,但似乎没有多大帮助。
【问题讨论】:
-
细胞被重复使用,所以这就是你得到这个结果的原因。您需要跟踪任何已访问单元格的索引路径。
标签: ios objective-c uitableview