UITableView
私の見解では、特定のセクションのスワイプ削除モードの行を適用したいと考えています。私が実装したのは次のとおりです。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@">> canEditRowAtIndexPath");
if (indexPath.section == CanDeletedSection) {
return YES;
}else{
return NO;
}
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@">> editingStyleForRowAtIndexPath");
if (indexPath.section == CanDeletedSection) {
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@">> commitEditingStyle");
if (editingStyle == UITableViewCellEditingStyleDelete) {
// dosomething
}
}
しかし、表の行をスワイプすると、Delete
ボタンが表示される場合と表示されない場合があります。ちなみに、私のセルはカスタマイズされており、 から継承されてUITableViewCell
います。
NSLog
上記のメソッドに追加しました。ボタンが表示されない場合Delete
、ログは次のようになります。
>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
ボタンが表示されると、ログは次のようになりDelete
ます。
>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath
カスタマイズされたセルを使用して、正常に動作するデモを作成しました。したがって、問題は、テーブル ビューを含むビュー コントローラーによって引き起こされます。ビュー コントローラーは別のビュー コントローラーから継承します。そのビュー コントローラーには、キーボードを非表示にするために使用されるタップ ジェスチャがあります。しかし、View Controllerからそれらを削除すると、結果は同じです。