美文网首页
iOS8 TableView 遇到的坑

iOS8 TableView 遇到的坑

作者: fengzilai | 来源:发表于2017-02-24 11:03 被阅读635次

    问题:iOS8下,界面A使用了grouped类型的UITableView,发现点击cell跳转到别到界面,再返回界面A的时候,tableView的滚动位置发生了改变,即tableView.contentOffset.y发生了改变。

    思考:tableView.contentOffset发生变化,查找发现自己没有手动设置tableView的contentOffset属性。那么一定是调用了scrollViewDidScroll代理方法,在scrollViewDidScroll下断点,发现点击cell的跳转的时候和返回的时候都调用了这个滚动的代理方法。一般tableView scrollViewDidScroll的调用是reloadData触发,在A界面断点[tableView reloadData],发现没有调用。

    解答:debug了很多次,排除其他原因之后,仔细看代码发现使用了预估高度和自动计算高度的代码

    tableView.estimatedRowHeight = 110;

    tableView.rowHeight = UITableViewAutomaticDimension;

    屏蔽这两句代码之后,果然成功解决。猜测是iOS8 使用预估高度和自动计算高度,每次tableView展示会自动去调用reloadData,所以改变了tableView.contentOffset。

    总结:iOS9及之上没有这个bug。预估高度和自动计算高度在iOS8下慎重使用。

    相关文章

      网友评论

          本文标题:iOS8 TableView 遇到的坑

          本文链接:https://www.haomeiwen.com/subject/pzziwttx.html