私はTwitterクライアントのiOSバージョンのようなプロジェクトに取り組んでいます。テーブルビューをデザインするとき、すべてのセルはそのコンテンツ(ツイート)に対応するために高さを変更します。
しかし、私は問題に遭遇しました。現在の画面のセルの高さはうまく機能しますが、下にスクロールすると、新しいセルは古いセルの高さを再利用します。
私はTwitterクライアントのiOSバージョンのようなプロジェクトに取り組んでいます。テーブルビューをデザインするとき、すべてのセルはそのコンテンツ(ツイート)に対応するために高さを変更します。
しかし、私は問題に遭遇しました。現在の画面のセルの高さはうまく機能しますが、下にスクロールすると、新しいセルは古いセルの高さを再利用します。
はい、テーブルプログラミングは、model-view-controllerアプローチが本当に役立つところです。セルの高さをどこかで変更すると、それが機能しているようtableView:didDeselectRowAtIndexPath:
に感じることができますが、機能しません。この方法でできることは、データを変更してテーブル(またはその一部)を再ロードすることです。
上記のコメントで述べたように、次のことを行う必要があります。
の各セルに正しい高さを指定します
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
で正しいビュー(セル)を提供する
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
変更を加える場合は、のデータmodel
(またはコンテンツ関連のデータを保持する適切なオブジェクト)を変更してから、次のいずれかのUITableView's reload
メソッドを呼び出す必要があります。
- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Appleのドキュメントは不足している可能性があります(私はそれがかなり専門的だと思いますが):これらはあなたのための基本的なリンクになります:
UITableViewDataSourceプロトコルリファレンス