我是子类化了一个tableView,然后用xib封装了一个tableViewcell,tableView 里面有里面要显示的控件,但是控件的位置、大小是在tableViewCell 的 setLayoutSubviews 中根据model 设置的。结果是没点击时,显示的位置是xib 里面的位置,然后点击之后是我在layoutSubviews 中设置的位置
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
tableViewcell封装或者不封装,高度都是由tableView决定的,在你没有实现- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath回调的情况下,tableView的RowHeight是固定的44,你使用的xib,所以最先加载好以后是xib里面的高度。问题中说的布局问题,要确认
setLayoutSubviews这个方法是否在model传递之后调用,题主可能使用的是layoutSubviews方法,或者setNeedsLayout?并不清楚,不过根据描述,点击后layoutSubviews方法是要调用的,这个时候model肯定已经绑定过了,所以位置就正确了。(仅猜测)暂且认为你说的是『tableViewCell 里面有里面要显示的控件』吧。
是不是勾上 AutoLayout 了…… 如果勾上了,
layoutSubviews不一定会调用。打个log看看调用了没有。重写 layoutSubviews 的时候调用 super 了嘛?
最好还是上代码吧
可能是
frame设置的问题,你检查一下xib里cell的frame和heightforrow