3

を使用してカスタムUITableViewCellの高さを作成したいと思います(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

UITableViewCell行数に各行の高さを掛けてから字幕textLabelを追加して、の高さを取得しようとしています。10.0f私は次のコードを使用して取得していexc_bad_access()ます。なんで?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return ([[[tableView cellForRowAtIndexPath:indexPath] textLabel] numberOfLines] * [[[[tableView cellForRowAtIndexPath:indexPath] textLabel] font] lineHeight]) + 10.0;
    //return kRowHeightiPod; //A constant value for a sanity check
}
4

2 に答える 2

4

セルを取得する前に、セルの高さを計算する必要があります。セルの取得に応じて高さを計算するようになりました。無限再帰を作成しました。

テーブルセルに直接クエリを実行するのではなく、おそらくテーブルセルに追加するデータを調べることによって、計算を行う別の方法を見つける必要があります。

numberOfLinesまた、これはテキストラベルが表示できる行数を表しますが、十分なコンテンツがない場合は表示が少なくなる可能性があることに注意してください。つまり、1行のテキストしか表示されていない場合でもnumberOfLines、テキストラベルが表示できる最大行数であれば、2行が返されます。

おそらく必要なのは、NSString UIKitの追加機能のいずれかを使用して、セルに表示するテキストテキストの高さを計算することです。

于 2010-10-04T22:24:47.183 に答える
0

ラベルに行数を設定しますか? 使用しているテキストに一致する行数ではなく、デフォルトの回答が得られるためです...

クラッシュの最も可能性の高い原因は、textLabel と関係があると思います。実行可能ファイルの環境変数で NSZombieEnabled を YES に設定してみてください。ログは、オブジェクトが解放された後に呼び出されているオブジェクトの種類を示します...

于 2010-10-05T00:24:50.203 に答える