我有一个自定义单元格。它有两个文本字段和按钮,所有这些都是我在故事板中创建的。但是当我滚动我的下一个单元格时会出现新文本,但是带有旧按钮(带有来自第一个单元格的按钮)。
根据许多教程,必须使用以下行修复此可重复单元格:
LessonCell *cell = (LessonCell *)[self.lessonTV dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[LessonCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
但在我的情况下,这还不够,当我滚动时,它不起作用,我的细胞会重复,你能帮助我吗?
还有一点:只重复第一个细胞((
答案 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
}