私は iOS と MonoTouch が初めてで、かなり基本的なニーズがあります。選択されているかどうかに応じて、同じテーブル セルに表示する 2 つの大きく異なるビューがあります。アプリをロードすると、カスタム UITableView に製品のリストが表示されます。すべての行が選択解除され、各行は基本的にラベルに製品名を表示するだけです。ユーザーが行の 1 つをタップして選択するとすぐに、ショッピング カートのレイアウトに近い非常に異なるビューが表示されます。2 つのビューは非常に異なるため、サイズが大きく異なります。現在表示されているビューの自然な高さに応じて、セル自体(または行?)が拡大および縮小する必要があります。
ソリューションには、UITableViewController、UITableViewSource、および UITableViewCell の子孫を使用しています。私がしていることは、両方のバージョンをセルの ContentView に追加し、セル/行が選択/選択解除されたときに必要に応じて Hidden プロパティを設定して、正しいレイアウトを表示することです。それはうまくいきます。私は今デモモードにいるので、効率や応答性についてはあまり心配していません。
GetHeightForRow が行のサイズ変更を担当していることは知っていますが、セルが最初に表示されたときに一度だけ呼び出されます。ビューが変化しているときに新しいサイズのソースを再ポーリングするように TableView に警告する必要があるように思えますが、その方法がわかりません。
Cell.SetNeedsLayout と Cell.SetNeedsDisplay を使用して GetHeightForRow を手動で再度呼び出すように (むしろうまくいけば) 試みました。これにより、テーブルが新しいディメンションのソースを再クエリするようになることを期待しましたが、喜びはありませんでした。
contentview 自体のサイズを変更しようとして、直接的なアプローチをいじりましたが、どこにもつながっていないように見えました。新しい行サイズを照会するようにテーブルに指示する必要があるように感じますが、どんな提案も受け付けています。
これを試みたのは私が初めてではないでしょうか?私は何が欠けていますか?