tableView的reloadData方法与reloadSections的区别
-
reloadSection和relaod方法复用规则不太一样:
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
- 当调用
[tableview reloadData]
的时候,当前展示的cell
其实是可以复用的。但是调用reloadSection
时候,当前的cell
是不能复用的,需要再创建一个或者多个出来,用来展示,创建出来以后,再执行reloadSection
的时候cell
就能复用了。
类似于:有一个section
, item
为cellA
,调用reloadSection
,会创建一个新的cellAA
,并展示cellAA
,之后再调用reloadSection
就会从cellA
和cellAA
之间切换。
所以,当复用逻辑复杂的时候。不要使用reloadSection
,因为当第一次调用reloadSection
的时候,重新创建的cell
上的某些控件的frame
和原来的展示的cell
的控件的frame
很可能不一样,所以就可能会导致UI
混乱,鄙人深受其害,今天看了一位大神的博客才知道的,故自己mark一下