tableView常见问题。

通过tableView的代理方法设置组头View,却不设置组头的高度,会出现什么情况?


有时候不会调用tableView的代理方法,且tableView的高度要大于组头的高度,否则会发现返回行,返回Cell等代理方法依旧不执行。


设置了sectionHeaderHeight,又通过tableView的代理方法返回了一个带有高度的组头View,组头View的高度是否改变?


若设置了sectionView的sectionHeaderHeight则组头的高度不会因为view的高度而改变。所以若添加按钮或手势在View上,即使有时能响应,但超过组头的部位却会出现点击事件无法响应等问题。


若在自定义方法中调用了tableView的reload方法,则此时是去刷新tableView还是等到自定义方法运行结束再去刷新?


对于tableView的reload方法,不会立刻调用,而是等到所在方法结束后才去刷新tableVIew。


若一个界面即含有tableView又包含collectionView时,则滚动时会出现什么情况?


当一个页面即含有tableView又包含collectionView时,滚动结束时调用的方法可能会都调用同一个方法:scrollViewDidEndDecelerating:(UIScrollView *)scrollView,所以要在方法内部需要对scrollView进行判断,判断一下当前scrollView属于哪个类的[[scrollView isKindOfClass:[UICollectionView class]]进而做出不一样的处理,以免出现BUG。


如何快速获取tableView或CollectionView的所有Cell?


通过[self visibleCells]可获得tableView或collectionView的所有cell。


tableView有时候会出现最后一行的Cell过高,为什么?


关于tableView有时候会出现最后一行Cell过高,是由于tableView的高度设置问题。


UITableViewCell的cell行高自动计算,为什么有时候会失效?


UITableViewCell的cell行高自动计算,需要把视图添加到ContentView里,否则有时候会出现Cell高度为默认高度而不是Cell的高度随着内容的添加而改变。


如何让tableView不显示没内容的cell?


tableView不显示没内容的cell可通过self.tableView.tableFooterView = [[UIView alloc]init];


数据量大时用PickerView还是tableView,为什么?


pickerView数据量大时不好查找,因为需要一个一个翻 ,而tableView则有个索引。


重用时cell上的contentView的内容会不会清空?


不会。所以会出现数据重叠现象,我的解决方案是创建完cell后在创建一个与cell同等大小的view覆盖住(但是原数据还在,占内存。且瀑布流时会发现数据显示错误)。或删除cell的所有子视图:


while ([cell.contentView.subviews lastObject] != nil)


{


  [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];


}(保证了数据全部清空)


或通过自定义Cell,然后通过重写LayoutSubviews使得cell的frame被修改时,控件的frame也跟着改变,并且赋值时对同一个内存空间赋值。


有人说可以用prepareForReuse,但我试了之后发现没有成功。查了下资料说是需要重写此方法,然而此方法又是需要继承cell之后才能重写,所以不自定义cell的时候我就直接用的while循环清空视图。


若cell被同等大小的按钮覆盖住会怎样?被View覆盖住那?


被按钮覆盖住则cell的点击事件被拦截,被View覆盖住则不会。除非你给View添加一个手势监听,此时可通过按钮的点击事件来代替cell的点击事件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容