你有没有这样的经历,当你需要刷新某一行的时候发现,界面出现了一块块的空白。而那些空白所在的位置是一些sectionheaderView或者footerview 同时还输出 no index path for table cell being reused。 造成这种问题的原应很可能是 在section的headerView或footerView使用的是UITableViewCell 类型。

那么遇到这种情况该怎么解决呢? 怎么才能影响最小 改动最小来搞定这个问题呢?其实我们只需要在返回这个cell 的时候在这个cell上套一层View。我是这样解决的。

1
2
3
4
5
6
 FMSectionHeaderView *cell = [_tableView dequeueReusableCellWithIdentifier:NSStringFromClass([FMSectionHeaderView class])];
// 直接把cell 当作header 会导致 no index path for table cell being reused 的问题
UIView * view = [[UIView alloc] initWithFrame:cell.frame];
cell.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[view addSubview:cell];
return view;

近期,参与了一个项目的维护,发现修改别人的代码真的是一件逼的事情,遇到一半英文一半拼音的变量名简直就想打人;当你发现了奇怪的函数名时不要慌,你要学会适应,因为在做项目维护的时候,你会经常遇到。突然想起了别人说的 一个挫程序员养活了一大帮程序员 所以墙裂呼吁大家不管写哪种语言一定要先读读编码规范。哪怕写的程序有bug 但是最起码的规范遵守了,别人看着代码心情也舒畅。

转载请注明出处:
原文地址:http://mingxianwei.github.io/2016/05/25/no-index-path-for-table-cell-being-reused
作者:小土豆

推荐文章