ios - 为什么tableView 的cell 刚进去的时候里面的内容显示不正确,但是点击一下就显示正常?
伊谢尔伦
伊谢尔伦 2017-04-17 17:25:36
[iOS讨论组]

为什么tableView 的cell 刚进去的时候里面的内容显示不正确,但是点击一下又显示正常?

我是子类化了一个tableView,然后用xib封装了一个tableViewcell,tableView 里面有里面要显示的控件,但是控件的位置、大小是在tableViewCell 的 setLayoutSubviews 中根据model 设置的。结果是没点击时,显示的位置是xib 里面的位置,然后点击之后是我在layoutSubviews 中设置的位置

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
怪我咯
我是子类化了一个tableView,然后用xib封装了一个tableViewcell,tableView 里面有里面要显示的控件,但是控件的位置、大小是在tableViewCell 的 setLayoutSubviews 中根据model 设置的。结果是没点击时,显示的位置是xib 里面的位置,然后点击之后是我在layoutSubviews 中设置的位置
  1. tableViewcell封装或者不封装,高度都是由tableView决定的,在你没有实现- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath回调的情况下,tableView的RowHeight是固定的44,你使用的xib,所以最先加载好以后是xib里面的高度。

  2. 问题中说的布局问题,要确认setLayoutSubviews这个方法是否在model传递之后调用,题主可能使用的是layoutSubviews方法,或者setNeedsLayout?并不清楚,不过根据描述,点击后layoutSubviews方法是要调用的,这个时候model肯定已经绑定过了,所以位置就正确了。(仅猜测)

怪我咯

暂且认为你说的是『tableViewCell 里面有里面要显示的控件』吧。

是不是勾上 AutoLayout 了…… 如果勾上了,layoutSubviews不一定会调用。打个log看看调用了没有。

PHP中文网

重写 layoutSubviews 的时候调用 super 了嘛?

最好还是上代码吧

PHP中文网

可能是frame设置的问题,你检查一下xib里cell的frameheightforrow

迷茫
那就是点击之前你没有layoutSubviews,点击之后你调用了layoutSubviews函数了。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号