本文来源于作者实际开发中的经验,分享出来,希望能给被同样问题困扰的同道带来帮助;
使用xib注册cell,有时需要动态改变cell的高度,但是如果你如下代码进行操作,xcode可能就会报一些奇怪的错误;
为tableView注册cell:
[tableView registerNib:[UINib nibWithNibName"xxxCell" bundle:nil] forCellReuseIdentifier"cell"];
在代理cellForRowAtIndexPathNSIndexPath *)indexPath中对cell进行复用设置;
错误示例:
xxxCell *cell = [tableView dequeueReusableCellWithIdentifier"cell" forIndexPath:indexPath];
上述复用cell时,加了forIndexPath:indexPath调用下列代理时就会有问题:
-(CGFloat)tableViewUITableView *)tableView heightForRowAtIndexPathNSIndexPath *)indexPath{
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}
正确示例:
xxxCell *cell = [tableView dequeueReusableCellWithIdentifier"cell"];
这样代理方法heightForRowAtIndexPathNSIndexPath *)indexPath可以正常发挥作用,编译也不会报错; |