UITableView
丸い赤いボタンと削除ボタンを編集するときは、カスタムセルと重なっています。
カスタムセルのサイズを変更して、赤い丸いボタンと削除ボタン用のスペースを残すにはどうすればよいですか。
このコードを使用すると、セルの編集方法と編集段階に応じてさまざまなタスクを実行できます。自分でこれを理解するのに非常に長い時間がかかったので、コードに重くコメントしました。(混乱する)
- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];
if (state == UITableViewCellStateDefaultMask) {
NSLog(@"Default");
// When the cell returns to normal (not editing)
// Do something...
} else if ((state & UITableViewCellStateShowingEditControlMask) && (state & UITableViewCellStateShowingDeleteConfirmationMask)) {
NSLog(@"Edit Control + Delete Button");
// When the cell goes from Showing-the-Edit-Control (-) to Showing-the-Edit-Control (-) AND the Delete Button [Delete]
// !!! It's important to have this BEFORE just showing the Edit Control because the edit control applies to both cases.!!!
// Do something...
} else if (state & UITableViewCellStateShowingEditControlMask) {
NSLog(@"Edit Control Only");
// When the cell goes into edit mode and Shows-the-Edit-Control (-)
// Do something...
} else if (state == UITableViewCellStateShowingDeleteConfirmationMask) {
NSLog(@"Swipe to Delete [Delete] button only");
// When the user swipes a row to delete without using the edit button.
// Do something...
}
}
あなたはカスタムラベルを追加したと言いましたが、私は以前にテーブルビューを使用しているときに同じことをしました。私は通常、次のようなアニメーション ブロックを使用してオーバーラップしているビューを「非表示」にすることを好みます。
[UIView animateWithDuration:0.3
animations:^ {
self.myTableCellSubview.alpha = 0.0f;
}
];
上記の各 if ステートメント内で、状態に応じてアルファを 1.0f から 0.0f に変更します。
一般的なインデントに関しては、属性インスペクターで、「編集中にインデントする」がチェックされていることを確認してください。これは、プログラムで設定することもできます。
cell.shouldIndentWhileEditing = YES;
それがうまくいかない場合は、自動サイズ調整で風変わりなことが起こっている可能性があります。ストーリーボードまたは xib で、インデントする必要があるセルのサブビューを選択し、サイズ インスペクター (ルーラー タブ) に移動します。サブビューを左からインデントする必要がある場合 ( ---> )、左に固定されていることを確認してください。
サブビューを右からインデントする必要がある場合 ( <--- )、右に固定されていることを確認してください。
お役に立てれば!
これらのメソッドのいずれかをオーバーライドして、カスタム セルのサイズを変更できます。ただし、これが質問に基づいて求めているものかどうかはわかりません。
- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state