私はこれを解決することができましたが、悲しいことに追加の足取りを必要とし、カップルのプロパティを設定するだけでは簡単ではありません。私のカスタムeditingAccessoryView
が表示されますように、私はUITableViewCellEditingStyleNone
を返す私の
- (UITableViewCellEditingStyle)tableView:(UITableView *)_tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
方法で
。この方法では、私もこの操作を行います。
self.tableView.scrollEnabled = NO;
if(self.editingPath)
{
[[tableView cellForRowAtIndexPath:editingPath] setEditing:NO animated:YES];
}
self.editingPath = indexPath;
for (UITableViewCell *cell in [tableView visibleCells])
{
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
これはスクロールを無効にし、その後、私たちは、後で使用するためにスワイプindexPath
を格納します。行を編集中に別の行をスワイプすると、最初の行の編集が解除され、2番目の行が編集されます。これはAppleアプリケーションの動作です。私はまた、すべての目に見えるセルのセルselectionStyle
をUITableViewCellSelectionStyleNone
に設定しました。これにより、ユーザーが現在編集している間に別のセルを選択すると、青いちらつきが減少します。
次に、別のセルがタップされたときにaccessoryView
を却下する必要があります。私たちは、このメソッドを実装することを行うには:誰かが私たちはそのセルuneditの後、編集している場合は、セルをクリックして、何も返さないとしているときに、これは何
-(NSIndexPath *)tableView:(UITableView *)_tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.editingPath)
{
UITableViewCell *c = [tableView cellForRowAtIndexPath:self.editingPath];
[c setEditing:NO animated:YES];
self.tableView.scrollEnabled = YES;
self.editingPath = nil;
for (UITableViewCell *cell in [tableView visibleCells])
{
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
}
return nil;
}
return indexPath;
}
です。
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
にも
私は、ユーザーが削除できるようにしたいセルに編集を可能にするために、YES
を返します。
@jrturton私は同じ問題を抱えています。私はhttp://stackoverflow.com/questions/7295834/custom-editingaccessoryview-not-working?lq=1を参照しています。ありがとうございました! –