8

UITableView編集モードで複数のセルを選択できるように構成されています。ただし、左側の空の白い円は、セルがタッチ/選択された後、内側に白いチェックマークが付いた赤い円に変わることはありません。

でスワイプして削除する問題について読んだことがあるallowsMultipleSelectionDuringEditingので、私のsetEditing:animinated方法は次のようになります。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    self.tableView.allowsMultipleSelectionDuringEditing = editing;
    [super setEditing:editing animated:animated];
}

ネット上の一部のリソースでは、設定allowsSelectionDuringEditing = NO;を提案していますが、効果はありません。また、私のセル編集スタイルは に設定されてUITableViewCellEditingStyleDeleteおり、変更しても効果はありません。

編集モードで行がタッチされるtableView:didSelectRowForIndexpath:とトリガーされますが、前述のように、UI にはこれが反映されません。

4

4 に答える 4

30

よくあることですが、私のミスでした。

tableView:cellForRowAtIndexPath:問題は、セルのselectionStyleプロパティをに設定していた の実装にありましたUITableViewCellSelectionStyleNone。何らかの理由で、これには、複数選択編集モードで左側の赤いチェックマークを無効にするという追加の「利点」があります。

設定cell.selectionStyle = UITableViewCellSelectionStyleGray;により問題が修正されました。

于 2012-10-03T14:05:24.110 に答える
1

古いスレッドですが、私もこの問題を抱えていましたが、カスタムセルがスーパーを呼び出さずに setSelected および setHighlighted メソッドをオーバーライドしていたことが原因であることがわかりました。

これにより、セルが選択可能になりませんでした。

于 2014-02-12T10:05:35.793 に答える
1

同様の問題がありました。これは、セルに選択が表示されないようにするために非常に懸命に取り組んでいたためです(「チャットバブル」スタイルのテーブルの場合)。

もちろん、この修正によりテーブルに非常に大きなカラーバーが表示され、それらを取り除く別の方法を見つける必要がありました.

cellForRowAtIndexPath では、selectionStyle を設定する代わりに selectedBackgroundView を設定でき、チェックボックスも有効になります。ビューはセルの背景色または clearColor にすることができ、何も表示されません。これが私のコードです:

static dispatch_once_t onceToken;
static UIView * selectedBackgroundView;
dispatch_once(&onceToken, ^{
    selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
    selectedBackgroundView.backgroundColor = APP_CELL_BACKGROUND_COLOR;
});
cell.selectedBackgroundView = selectedBackgroundView;
于 2014-02-26T20:13:39.550 に答える