2

我有一个使用 OwnerDrawnElement 创建的自定义单元格,其中包含可自动调整大小的 UITextView。当文本更改时,应该有适当的布局重绘和单元格高度重新计算。问题是如何保存打开的键盘。UITableView 中有一个方法 - ReloadRows 实际上以某种方式帮助了我。我不能为我的牢房打电话,因为它是第一响应者,我不能辞职。但是当我为另一个单元格调用它时,我的单元格正在按照我的意愿调整大小,但我有不必要的另一个单元格重绘。所以我想知道调用什么方法来重新布局 UITableView 不重新加载数据?!当您向上和向下滚动时,可能会调用相同的方法,单元格变得可见并且重新计算高度。

我尝试了标准的 SetNeedsDisplay()、SetNeedsLayout()、ReloadInputViews()、LayoutSubviews(),但它没有做同样的事情。也许我需要以不同的方式使用它们。我试图将它们称为单元格和整个 tableview 对象。

我查看了 ReloadRows 方法,发现它调用了一些 API 的东西:

Messaging.void_objc_msgSendSuper_IntPtr_int(base.SuperHandle, UITableView.selReloadRowsAtIndexPathsWithRowAnimation_, nSArray.Handle, (int)withRowAnimation);

因此,什么方法也不会强制 tableview 重新计算每个单元格的高度而不重新加载数据。

你能帮我解决这个问题吗?

4

1 回答 1

5

尝试更新单元格框架,然后调用 UITableView 的空更新块:

tableView.BeginUpdates();
tableView.EndUpdates();
于 2013-01-27T11:02:36.163 回答