1

UITableViewCellテキストコンテンツに基づいた動的な高さがあります。高さでtableview:heightForRowAtIndexPath:計算されます。これはうまくいきます。

セルがeditingStyleUITableViewCellEditingStyleDeleteで編集モードに入ると、セルが少しインデントされ、コンテンツが押し出され、rowHeightが変更される可能性があります。ここでも、テーブルビューを編集に切り替えると、テーブルが再レイアウトされ、rowHeight が再計算されるため、これはうまく機能します。

赤いボタンをクリックするか、セルをスワイプすると、セルの右側に [削除] ボタンが表示されます。ただし、これはテーブルの再レイアウトをトリガーせず、セル自体のみをトリガーします。ここでの問題は、コンテンツが下端を超えると、セルのサイズが変更されないことです。

削除ボタンが表示されたときにテーブルの再レイアウトをトリガーする方法はありますか?

4

1 に答える 1

1

一般に、 の高さはUITableViewCellを介し​​てのみ設定できtableview:heightForRowAtIndexPath:、後者のメソッドは の前に (行ごとに) 1 回だけ呼び出されるため、UITableViewCell の高さを調整する必要がありますtableView:cellForRowAtIndexPath:[tableview reloadData]

多分あなたはこれらのデリゲートメソッドで何かをすることができます

// The willBegin/didEnd methods are called whenever the 'editing' property is automatically changed by the table (allowing insert/delete/move). This is done by a swipe activating a single row
- (void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath; 

あなたの質問に対して、- (void)layoutSubviewsカスタム UITableViewCell でテキスト コントロールのプロパティをリセットできます。

- (void)layoutSubviews
{
    [super layoutSubviews];
    CGFloat theWidth = self.frame.size.height; //changed when entering the edit style
    ...
}

これらがお役に立てば幸いです。

于 2013-04-26T06:03:24.910 に答える