私は以下のセットアップを持っています:カスタムUITableViewCellの実装を持つUITableView。各セルには、UILabelとUIButtonがあります。表が最初に表示されるとき、各セルでUILabelの行数は1に設定され、すべてのセルの高さは固定されています(私の場合は60ピクセル)。セル内のボタンがタップされると、UILabelの行数は0に設定され、ワードラップがオンになり、効果的に表のセルが展開されます。UITableView - セル自体によって制御される動的セルの高さ
UITableViewCellの実装では、ラベルが展開されているかどうか、つまりセルの高さを知ることができるという問題があります。ただし、所有者ファイルはテーブルのデータソースです。
これを設定する方法については頭がいっぱいです。任意のアイデアが評価されます。しかし、これは中にランダムになり
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
OOCommentCell *cell = (OOCommentCell*)[tableView cellForRowAtIndexPath:indexPath];
return [cell requiredHeight];
}
:
- (float)requiredHeight
{
if(isFull)
{
CGSize labelSize = [LblTitle.text sizeWithFont: [LblContent font]
constrainedToSize: CGSizeMake(300.0f, 300.0f)
lineBreakMode: UILineBreakModeTailTruncation];
return 42.0f + labelSize.height;
}
else
{
return 60.0f;
}
}
所有者ファイル(UITableViewDelegate):
更新は、ここでは、カスタムUITableViewCellの実装では私のコード
から抽出されています無限ループまたはBAD_ACCESS_EXCEPTION
私はUITableViewCellの内部でUIWebViewを使用しているので、heightForRowAtIndexPathが呼び出されているときにその高さを伝えることはできません。 私は、セルをUIWebViewのデリゲートとして設定し、webViewDidFinishLoadメソッドで[webView sizeToFit]を呼び出します。 webView.hidden = NO; [tableViewController setRowHeight:webView.bounds.size.height forRowId:id]; UITableViewControllerのsetRowHeightメソッドでは、私が用意した2つのメソッドを呼び出します。[tableView beginUpdates]; [tableView endUpdates];それは動作します。 – asdfasdfads