4

私はTwitterクライアントのiOSバージョンのようなプロジェクトに取り組んでいます。テーブルビューをデザインするとき、すべてのセルはそのコンテンツ(ツイート)に対応するために高さを変更します。

しかし、私は問題に遭遇しました。現在の画面のセルの高さはうまく機能しますが、下にスクロールすると、新しいセルは古いセルの高さを再利用します。

4

1 に答える 1

3

はい、テーブルプログラミングは、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のドキュメントは不足している可能性があります(私はそれがかなり専門的だと思いますが):これらはあなたのための基本的なリンクになります:

UITableViewクラスリファレンス

UITableViewDataSourceプロトコルリファレンス

UITableViewDelegateプロトコルリファレンス

iOS用テーブルビュープログラミングガイド

于 2012-02-25T12:12:36.307 に答える