7

その行のセルに応じて UITableView の行の高さを調整したい。

最初に、私は使用しようとしました

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

ただし、問題は、テーブルがロードされているときに、呼び出しフローが次のように見えることです。

最初の呼び出し:

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

次に呼び出します。

(UIViewTableCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

つまり、セルが生成される前に、テーブルにその行の高さを伝える必要があります。

ただし、私が望むのは正反対です。つまり、セルが生成された後、この行の高さをテーブルに伝えます。

これを達成する方法はありますか?

4

2 に答える 2

5

からのデータに基づいてすべての行の高さの配列を作成し、tableView: cellForRowAtIndexPath:そのtableView heightForRowAtIndexPath:配列から高さの値を取得します。

実装ファイルで次のように宣言します。

NSMutableArray *heights;

初期化ではviewDidLoad:

heights = [NSMutableArray array];

tableView: cellForRowAtIndexPath:各行の高さを設定します。

[heights addObject:[NSNumber numberWithFloat:HEIGHT]];

そしてtableView heightForRowAtIndexPath:戻り値で必要な高さ:

return [heights objectAtIndex:indexPath.row];

tableView: cellForRowAtIndexPath:がすべてのセルに対して呼び出され、次にすべてのセルが呼び出されるため、これは機能するはずtableView heightForRowAtIndexPath:です。

于 2013-11-07T13:03:50.590 に答える
1

唯一の解決策は、次のように.hファイルに変数を作成することです

@property (nonatomic) int height

のようにviewDidLoadに初期化します

self.height = 40;

次に、この変数を

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

 return self.height;
}

次に、tableView: cellForRowAtIndexPath:更新時にこの変数を新しい高さのように[self.yourTable reloadData]してから、viewDidAppear

于 2013-11-07T12:56:53.223 に答える