UITableViewセルでの編集時のカスタム削除ボタン
-
06-07-2019 - |
質問
この質問次のコードを表示します:
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"Sagar";
}
デフォルトの赤いボタンの代わりにカスタム画像が必要な場合はどうなりますか?
解決
luvieereは正しい-同じ「削除」が必要な場合比phor、あなたはアップルが提供する赤いボタンでそれを維持したい。なぜ変更するのですか?削除ボタンの標準として世界的に認識されています。
トゥイーティーのように、スワイプの動作を完全に変更する 場合は、独自のビューで描画するABTableViewCellのようなものを使用できます。カスタムテーブルビューを作成し、-touchesBegan:withEvent:をオーバーライドし、タッチを確認します。 2つのタッチの差(touchesMoved:withEvent :)を計算し、独自のビューを移動します。
他のヒント
このメソッドをカスタムセルに実装する
- (void)willTransitionToState:(UITableViewCellStateMask)state{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
[deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
[[subview.subviews objectAtIndex:0] addSubview:deleteBtn];
[deleteBtn release];
}
}
}
}
これは返信が遅くなりますが、誰かがこれが役立つことを願っています。したがって、受け入れられた答えは私にとってはやや複雑に思えます。@ user1684899の答えは、削除ボタンの外観を変更したい場合にのみ機能します。削除ボタンの外観(フレーム、位置など)を完全に変更したいので、解決策は、カスタムセルに独自の削除ボタンを追加し、最初は非表示にして、セルが表示されている場合にのみ表示することです。編集モード。さらに重要なことは、iOSの元の削除ボタンを非表示にし、後方互換性をサポートすることです。ここに私の秘 'を示します。
- (void)willTransitionToState:(UITableViewCellStateMask)state
{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask)
{
if (!IS_IOS_7){
for (UIView *subview in self.subviews)
{
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
{
// hide original button
[[subview.subviews objectAtIndex:0] setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
} else {
for (UIView *subview in self.subviews) {
for (UIView *subview2 in subview.subviews) {
if ([NSStringFromClass([subview2 class]) rangeOfString:@"Delete"].location != NSNotFound) {
// hide original button
[subview2 setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
}
}
} else {
// hide my custom button otherwise
[self.deleteButton setHidden:YES];
}
}
追加することを忘れないでください:
[cell.deleteButton addTarget:self action:@selector(deleteEntryAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];
cellForRowAtIndexPath
で、削除ボタンがクリックされたときに必要なものを追加できます。ここに私の結果があります:
luvieereの答えのコメントで述べたように、意図したリストダイブインアクションのシステム全体の標準は、スワイプジェスチャーではなく、詳細開示(青い丸の矢印)セルアクセサリーを使用することです。
とはいえ、まだスワイプアクションを使用したい場合は、Tweetieのように、スワイプジェスチャを手動でインターセプトして完全に再実装することなく、独自のボタンを提供する方法はありません。