变高UITableViewCell

家住魔仙堡 提交于 2019-12-03 11:58:56

在iOS上开发了一个有列表的应用,列表中的每一项都是有很多控件组成的,每一项的内容大概一样,自己定制了一下Cell,基本上满足要求了。后来Cell中的UILabel中的内容过长,需要自定义高度,看了一下SDK的文档,可以通过实现下面的方法来解决这个问题。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath

返回相应的行的高度,这个函数可以解决问题,每行的高度却是调整了,但是当调整内部的UILabel的高度时出现了问题。调整一个Cell的内容,多个Cell的内容都发生了变化。后来想尽各种办法,不能解决。后来仔细看啦一下SDK的说明,在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

函数中调用的  dequeueReusableCellWithIdentifier函数有一个重用机制,根据   reuseIdentifier   来进行重用,所以导致一个修改,其他的有可能受到影响,为了修改这种默认行为,重载了UITableViewCell的   reuseIdentifier   函数,在UILabel发生变化时,返回不同的   reuseIdentifier   ,这样dequeueReusableCellWithIdentifier函数就不会重用这些修改过的Cell了,如果很多这种类型的,也可以按照规律返回相应的reuseIdentifier,在调用dequeueReusableCellWithIdentifier时,使用相应的reuseIdentifier进行重用。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!