1

我在 iOS 6.1 中有一个带有基本 (UITableViewCellStyleDefault) UITableViewCells 的普通 (UITableViewStylePlain) UITableView。当它进入编辑模式时,它的单元格按我想要的方式缩进。但只有在所有单元格标签都很短的情况下:如果一个单元格的标签足够长,可以在右侧剪裁,则表格单元格将不再缩进。

例如:

  1. 一个单元格的表格:(SHORT)=>缩进,即有效
  2. 有两个单元格的表格:(LONG) (SHORT) => 两个单元格都没有缩进,即不起作用

有哪些简单的步骤可以解决这种情况?例如,似乎我无法更改基本的预设大小属性,即 Xcode 中的非自定义表格视图单元格。

更新:这里有两张图片进一步描述了这个问题(第一个:正确的情况,第二个:不正确的情况):

在此处输入图像描述 在此处输入图像描述

更新:事实证明,根本原因不是标签的长度。相反,它似乎与我的异步有关。与此表视图相关的 KVO 处理。我tableView:cellForRowAtIndexPath:在单元格的底层托管(核心数据)对象上调用了一个 getter。似乎托管对象的默认 getter 依次调用它们自己的 setter,可能是在实现错误对象时。由于我的 KVO 的设置方式,这会导致另一个调用tableView:cellForRowAtIndexPath:. 碰巧的是,只有第二种情况涉及 KVO 通知,随后的递归调用可能会导致问题(无论如何这似乎有点奇怪)......

4

1 回答 1

0

我已经能够通过在表视图的数据源的构造函数中“预取”底层托管对象来解决这个问题。我通过访问表格单元格中显示的属性来做到这一点。这样,第一个 KVO 通知将在不会导致不必要的递归调用tableView:cellForRowAtIndexPath:.

如果有更好(更优雅)的方式来处理这种情况,我仍然有兴趣了解它。

于 2013-03-07T18:24:17.870 回答