Monotouch:强制UITableView重新计算每个单元格的高度而无需重新加载数据

dru*_*mel 2 uitableview xamarin.ios ios monotouch.dialog

我有一个使用OwnerDrawnElement创建的自定义单元格,其中包含可自动调整大小的UITextView.当文本改变时,应该有适当的布局重绘和单元格高度重新计算.问题是如何保持键盘打开.UITableView中有一个方法 - ReloadRows实际上以某种方式帮助了我.我不能把它称为我的细胞,因为它是第一个响应者,我不能不能让它辞职.但是当我把它称为另一个单元格时,我的单元格会根据需要调整大小,但是我没有必要重新绘制另一个单元格.所以我想知道什么方法被调用来重新传输UITableView NOT重载数据?!当您向上和向下滚动,单元格变得可见并重新计算高度时,可能会调用相同的方法.

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

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

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

因此,没有哪种方法强制tableview重新计算每个单元格的高度而不重新加载数据.

你能帮帮我吗?

Max*_*bov 5

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

tableView.BeginUpdates();
tableView.EndUpdates();
Run Code Online (Sandbox Code Playgroud)