UITableViewCell右侧detailTextLabel框架在reloadData之后调整大小

时间:2015-03-28 15:12:15

标签: ios objective-c uitableview ios8

我有一个UITableView,其中一个右侧细节单元格和滚动禁用,表格高度设置为44(与单元格相同)。单元格显示表示A类对象的数据。当用户点击单元格时,它会用表格推送一个新VC来选择A类的新对象。但是当我弹回旧VC并调用{{1}时在reloadData中,viewWillAppear已完全更改且不可见。

所以在这个日志中,第一行是对detailTextLabel.frame(对象1)的初始调用,一切都正确显示。第二行是在选择对象2(cellForRowAtIndexPath的空字符串)之后。第三行是在再次选择对象1之后,之前正在工作的detailTextLabel现在是不可见的。

detailTextLabel

我已在故事板中设置了具有正确重用ID的表,并且正在调用2015-03-28 10:48:11.747 dojo[32523:5852510] detail text label: <UITableViewLabel: 0x15d5de470; frame = (463 12; 42 20); text = '1234'; opaque = NO; autoresize = RM+BM; layer = <_UILabelLayer: 0x17429a810>> 2015-03-28 10:48:20.374 dojo[32523:5852510] detail text label: <UITableViewLabel: 0x15d5de470; frame = (468.5 13; 36.5 19.5); text = ''; autoresize = RM+BM; layer = <_UILabelLayer: 0x17429a810>> 2015-03-28 10:48:23.192 dojo[32523:5852510] detail text label: <UITableViewLabel: 0x15d5de470; frame = (505 13; 0 0); text = '1234'; autoresize = RM+BM; layer = <_UILabelLayer: 0x17429a810>> 来获取单元格;

更新:gist for VC

更新2:我无法上传整个项目,但我已经创建了一个demo project,其中包含一部分实际代码(略有修改后的依赖项),这些代码存在同样的问题。

1 个答案:

答案 0 :(得分:2)

在查看您的代码后,这似乎是Apple代码中的一个错误。如果我在设置文本后使用sizeToFit(并且有一个要查看的车辆号码),则显示该号码,但是在您按下然后再次弹回之前,人字形会消失;这绝对不是它应该工作的方式。当没有vehicle.number而不是空字符串时,您可以通过将单个空格作为文本传递来轻松地绕过它。所以,

[cell.detailTextLabel setText: vehicle.number ? : @" "];

而不是这个,

[cell.detailTextLabel setText: vehicle.number ? : @""];

日志中的数字仍然落后;也就是说,在日志中看到正确的帧之前,您需要再次按下并弹出,但标签和V形符号都会正确显示。