セクション 1 の行を並べ替える必要があるアプリに取り組んでいます。tableView デリゲートを実装することで、並べ替えを実現できます。テーブルが編集モードのとき、セクション 1 の並べ替えを表示し、残りのセクションのコントロールは表示しませんが、残りのセクションの行は左にスワイプして削除する必要があります。
これが可能かどうかはわかりませんが、私の要件はまったく同じです。
私が行った作業: 以下は、私が実装した tableView のデリゲートです。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self.myTable isEditing]) {
return UITableViewCellAccessoryNone;
}
return UITableViewCellEditingStyleDelete;
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 1) {
return YES;
}
return NO;
}
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
上記のコードにより、編集モードが希望どおりに表示されました。再注文記号はセクション 1 でのみ表示され、赤い削除ボタンも残りのセクションでは表示されません (必要に応じて)。
問題: セクション 1 以外のセクションの行も削除されませんでした。左にスワイプしても何も起こりません。
つまり、編集モードでは、セクション 1 の並べ替えを有効にし、残りのセクションは通常モードと同じように機能する必要があります。つまり、左にスワイプして行を削除すると、テーブルビュー編集モードで機能する必要があります。