アラームアプリと同様のものが必要ですが、行を削除することはできませんが、編集モードで行を削除することはできます。UITableViewはスワイプを削除するのを無効にしますが、まだ編集モードで削除していますか?
tableView:commitEditingStyle:forRowAtIndexPath:をコメントアウトすると、削除するスワイプが無効になっていますが、編集モードでは削除ボタンが残っていますが、削除ボタンを押すとどうなりますか?何が呼び出されますか?
アラームアプリと同様のものが必要ですが、行を削除することはできませんが、編集モードで行を削除することはできます。UITableViewはスワイプを削除するのを無効にしますが、まだ編集モードで削除していますか?
tableView:commitEditingStyle:forRowAtIndexPath:をコメントアウトすると、削除するスワイプが無効になっていますが、編集モードでは削除ボタンが残っていますが、削除ボタンを押すとどうなりますか?何が呼び出されますか?
これはかなり簡単です。これは私がこの問題を解決するためにやったことです:
のObjective-C
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Detemine if it's in editing mode
if (self.tableView.editing)
{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
スウィフト2
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if tableView.editing {
return .Delete
}
return .None
}
スウィフト3
override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
if tableView.isEditing {
return .delete
}
return .none
}
削除をコミットするにはまだtableView:commitEditingStyle:forRowAtIndexPath:
を実装する必要があります。
基本的には、有効または方法
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
を使用して編集を無効に編集が有効になっている場合は、赤い削除アイコンが表示され、ユーザーに要求され、削除の立体構造。ユーザーが確認した場合、デリゲートメソッド
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
が削除要求を通知されます。このメソッドを実装すると、スワイプして削除すると自動的にアクティブになります。このメソッドを実装していない場合は、スワイプが削除されますが、実際に行を削除することはできません。したがって、私の知る限りでは、文書化されていないプライベートAPIを使用しない限り、あなたが求めたものを達成することはできません。おそらくこれがAppleアプリケーションの実装方法です。
私はにtableViewにUITableViewCellEditingStyleDelete復帰することによって、これを解決:editingStyleForRowAtIndexPathを:それは編集モードでいます。 – willi
tableView:commitEditingStyle:forRowAtIndexPath:
が実装されていない限り、削除を有効にすることはできません。
私は開発中でしたが、実装していなかったため、スワイプトゥーデリートが有効になっていませんでした。もちろん、完成したアプリでは、それはいつも実装されるでしょう。さもなければ編集がないからです。
スウィフトバージョン:
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if(do something){
return UITableViewCellEditingStyle.Delete or UITableViewCellEditingStyle.Insert
}
return UITableViewCellEditingStyle.None
}
buを削除してからスワイプすると自動的に有効になります。か否か? –
いいえ、スワイプは編集モードでない場合、有効になりません。だから、私はデフォルトとしてUITableViewCellEditingStyleNoneを返します。 – willi
commitEditingStyleで(editingStyle == UITableViewCellEditingStyleDelete)が必要な場合は忘れてください。 – willi