UITableView和UITableViewCell的层级关系

来源:互联网 发布:矩阵相乘的共轭转置 编辑:程序博客网 时间:2024/06/05 10:52

自定义cell中,在cell上添加了自定义的UILabel控件,点击cell上按钮时需要对自定义的UILabel文本进行展开和收起操作,类似微信的朋友圈,在自定义的UILabel控件中可以通过

(UITableViewCell *)[[self superview] superview]

去获取当前的cell,然后进行按钮点击刷新单个cell

但是在iOS7系统上项目直接闪退,调试中发现崩溃在了

[_tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[self.tableView indexPathForCell:(UITableViewCell *)[[self superview] superview]]] withRowAnimation:UITableViewRowAnimationNone];

说白了就是

(UITableViewCell *)[[self superview] superview]

没有取到cell

在控制台po一级一级打印发现,在iOS7系统中的UITableViewCell的层级关系有变化:

UITableViewCell->UITableViewCellScrollView->UITableViewCellContentView->自定义的控件

而在iOS7系统之后是这样的:

UITableViewCell->UITableViewCellContentView->自定义的控件

所以在iOS7系统上获取如上自定义的UILabel,需要再获取一次父视图,即:

(UITableViewCell *)[[[self superview] superview] superview]
0 0
原创粉丝点击