2013-01-25 74 views
1

我有一個使用OwnerDrawnElement創建的自定義單元格,其中包含可自動大小的UITextView。 當文字改變時,應該有適當的佈局重繪和單元高度重新計算。 問題是如何保持鍵盤打開。 UITableView中有一個方法 - ReloadRows實際上以某種方式幫助我。 我不能稱它爲我的細胞,因爲它是第一響應者,我不能辭職。 但是,當我爲另一個單元格調用它時,我的單元格正在按照我的意願調整大小,但是我沒有必要重新繪製另一個單元格。 所以我想知道什麼方法被稱爲重新佈局UITableView不重新加載數據?! 當您向上和向下滾動時,可能調用相同的方法,單元格變爲可見並且重新計算高度。我試過標準的SetNeedsDisplay(),SetNeedsLayout(),ReloadInputViews(),LayoutSubviews(),但它沒有做同樣的事情。也許我需要以不同方式使用它們。我試圖將它們稱爲單元格和整個tableview對象。Monotouch:強制UITableView重新計算每個單元格的高度,而無需重新加載數據

我看着ReloadRows方法,並發現它調用API的一些東西:

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

所以它不強制tableview重新計算每個單元格的高度而不重新加載數據。

你能幫我嗎?

回答

4

嘗試更新單元框架,然後調用的UITableView的空更新模塊:

tableView.BeginUpdates(); 
tableView.EndUpdates(); 
+0

這似乎並沒有爲我工作 - 實現代碼如下行保持不變高度 –

+0

4年之後情況可能就會發生改變。沒有太多的細節來確定它是什麼。 –

相關問題