1

カスタムセルに問題があります。
私のセルは次の画像のように構成されています。
ここに画像の説明を入力してください

灰色のビュー=cell.contentView
オレンジ色のビュー=contentViewにサブビューとして追加されたボタン
黄色のビュー=contentViewにサブビューとして追加されたラベル
青色のビュー=contentViewにサブビューとして追加された画像ビュー
緑色のビュー=アクセサリビュー

問題は、編集をtableViewに切り替えると、セルがインデントしてアクセサリビューを非表示にし、他のすべてを右に移動することです。これは避けたい。
編集モードを切り替えるとき、セルはそのコンテンツを移動してはならず、編集コントロール(左側の赤いボタンを差し引いたもの)がcontentView内のボタンの代わりになり、この最後のボタンが非表示になります。

tableView:shouldIndentWhileEditingRowAtIndexPath:tableViewがプレーンであるため、メソッドを試しましたが成功しませんでした。メソッドもオーバーライドしようとしましwillTransitionToState:たが、やりたいことがわかりません。

誰かが私を助けることができますか?
どうもありがとう!

4

2 に答える 2

3

セルにサブビューをどのように追加しましたか?それらをコンテンツビューに追加するのではなく、セルに直接追加した場合、それらは移動されません。セルが編集モードに移行したときにサイズが変更されるのはコンテンツビューです。

特定のサブビューを非表示にする場合setEditing:animated:は、セルサブクラスでオーバーライドし、必要に応じて非表示/表示する必要があります。

また、メソッドを使用して、ビュー階層のcontentViewの下にサブビューを追加するか、終了後にコンテンツビューを一番上に移動する必要がある場合がありますbringSubviewToFront:

于 2011-11-20T11:44:51.433 に答える
2

セルのサイズを本当に変更したくない場合は、次のように実装でき-layoutSubviewsます。

-(void)layoutSubviews
{
    if ([self isEditing] == NO) {
        // Lay out subviews normally.
    }
}

編集モードに入るときは-layoutSubviews、ビューをレイアウトするコードパスをたどらないでください。これは、UITableViewCellをサブクラス化したことを前提としています。

于 2011-11-20T14:14:11.860 に答える