由于TableView的Cell复用机制,当Cell出了屏幕会被放到缓存池中等待被复用,但此时缓存池中的这个Cell上的控件并没有被销毁,而当这个cell要被复用时就会造成需要展示的新内容还是之前的内容。
解决方法:
1.当某个cell从缓存池中被调出来需要被复用时,cell会先调用prepareForReuse方法,所以在这个方法中把控件上的内容置nil,就不会造成显示混乱问题。
- (void)prepareForReuse {
[super prepareForReuse];
//控件或控件内容置空
}
2.如果Cell数较少不需要复用:
去掉[tableView dequeueReusableCellWithIdentifier:CellIdentifier],用 XXXTableViewCell *cell = [[[NSBundlemainBundle]loadNibNamed:@"XXXTableViewCell"owner:selfoptions:nil]lastObject]; 方法重新创建Cell
每次走创建Cell的代理方法时都重新创建一个新Cell。