プログラミングが初めてです。次のコードはスワイプで行を削除しても機能しますが、すべての行のリストが更新された後に表示されます。 私は、次のしているコード:UItableviewスワイプの削除iOS 11でデータを更新/再読み込みしません。
- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
UIContextualAction *delete = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive
title:@"DELETE"
handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
NSLog(@"index path of delete: %@", indexPath);
completionHandler(YES);
}];
delete.backgroundColor = [UIColor purpleColor]; //arbitrary color
UISwipeActionsConfiguration *swipeActionConfig = [UISwipeActionsConfiguration configurationWithActions:@[delete]];
swipeActionConfig.performsFirstActionWithFullSwipe = NO;
return swipeActionConfig;
}
私は、次の使用しています:completionHandlerで
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
FCell = (favouriteCell *)[tableView dequeueReusableCellWithIdentifier:@"favouriteCell"];
FCell.selectionStyle=UITableViewCellSelectionStyleNone;
if (FCell == nil)
{
FCell = [[[NSBundle mainBundle]loadNibNamed:@"favouriteCell" owner:nil options:nil] objectAtIndex:0];
}
FCell.nameLBL.text=[[favDetails objectAtIndex:indexPath.row] valueForKey:@"name"];
FCell.poetLBL.text=[[favDetails objectAtIndex:indexPath.row] valueForKey:@"poet"];
return FCell;
}
データソースから行を削除しているようではありません。 削除のインデックスパスを記録するcompletionHandlerでは、データソース(配列など)からその行を削除する必要があります。そうしないと、テーブルがデータソースからリロードされたときに再び表示されます。 – Stephen
ありがとう、それを行う最良の方法は何でしょうか? – Simi
データソースとしてどのような構造を使用していますか? cellForRowAtIndexPathからいくつかのコードを共有できますか? – Stephen