UITableViewCell部分重复

时间:2015-11-03 17:12:19

标签: ios objective-c uitableview

我有一个自定义单元格。它有两个文本字段和按钮,所有这些都是我在故事板中创建的。但是当我滚动我的下一个单元格时会出现新文本,但是带有旧按钮(带有来自第一个单元格的按钮)。

根据许多教程,必须使用以下行修复此可重复单元格:

LessonCell *cell = (LessonCell *)[self.lessonTV dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
        cell = [[LessonCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

但在我的情况下,这还不够,当我滚动时,它不起作用,我的细胞会重复,你能帮助我吗?

还有一点:只重复第一个细胞((

2 个答案:

答案 0 :(得分:2)

如果您有一个自定义类来表示单元格,则可以覆盖-[UITableViewCell prepareForReuse]方法以在单元格出列时重置该单元格。

附注:你不应该使用

[tableView dequeueReusableCellWithIdentifier:]

你应该使用

[tableView dequeueReusableCellWithIdentifier:forIndexPath:]

后者不会被弃用,它有一些运行时检查可以帮助你。

答案 1 :(得分:0)

首次创建单元格时,它将使用一些值进行初始化。因此,当您向下滚动时,它将使相同的旧单元格出列,并且由于您没有对其进行修改,因此将显示相同的旧内容。您可以使用updateCell方法,每次加载该单元格时都会更新ui元素和内容。

LessonCell *cell = (LessonCell *)[self.lessonTV dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
    cell = [[LessonCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
[self updateCell];


-(void)updateCell{
   //do all content and ui updations here
}