我在自定义UITableViewCell中有一个UILabel,它可以在旋转设备时调整大小.旋转后需要重新计算此标签中的文本,因为我将其缩小到最小尺寸并在末尾添加一些文本.
例如,数据模型具有:"这是一个需要停止的连续句子."
在纵向模式下,它变为"这是一个连续发送...更多"
在横向模式中它变成"这是一个连续的句子...更多"
从(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
我能够访问可见的UITableViewCells并更新说明.
问题似乎是有UITableViewCells缓存但我无法达到.当我在旋转后滚动UITableView时,旋转后位于可见区域下方的一个或两个单元格在标签中没有正确的文本.所以它们没有被渲染(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath- 但是它们没有被[tableView visibleCells]返回(或者通过循环遍历通过[tableView子视图]返回的所有视图).
我试图通过这种方法访问"额外"单元格:
for (int index=max + 1; index < max + 3 && index < [cellTypes count]; index++) {
NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:index inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:updatedPath];
if (cell == nil) { continue; }
[self updateCellForRotate:cell forRow:index];
}
Run Code Online (Sandbox Code Playgroud)
(其中max是从visibleCells返回的最大行)但是单元格总是为零.
反正有没有刷新UITableViewCells的缓存,以便它们不被重用?或者访问它们以便我可以更新它们?
谢谢!