0

スイッチ付きのカスタム UITableViewCell サブクラスがあります。サブクラス内の valueChanged アクションで、スイッチの状態に応じてセルの選択されたプロパティを設定しました。

self.selected = self.optionSwitch.isOn

これらのセルを処理する UITableViewController で、選択した行をテーブル ビューに要求しますが、nil (選択された行がない) を返します。

self.tableView.indexPathsForSelectedRows

セルが選択されている場合に nil を返すのはなぜですか? 選択したプロパティを検査するために取得したため、実際にはYESであると確信しています。

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
BOOL isSelected = cell.isSelected;

PS1:テーブル ビューのallowMultipleSelectionプロパティを設定しました。

PS2: tableView:selectRowAtIndexPath:が機能することはわかっていますが、テーブル ビューに通知してテーブルビューにその行を選択させるためだけにカスタム セルのデリゲートを作成したくありませんでした。

4

2 に答える 2

0

諦めてPS2で使ってみました。カスタム セルのデリゲートを作成し、selectRowMethod を呼び出します。

#pragma mark - CellDelegate

- (void)didSelectCell:(CustomCell *)cell
{
    NSIndexPath *ip = [self.tableView indexPathForCell:cell];
    [self.tableView selectRowAtIndexPath:ip animated:NO  scrollPosition:UITableViewScrollPositionNone];
}

- (void)didDeselectOptionCell:(CustomCell *)cell
{
    NSIndexPath *ip = [self.tableView indexPathForCell:cell];
    [self.tableView deselectRowAtIndexPath:ip animated:NO];
}
于 2013-07-31T13:41:16.203 に答える
0

万が一誰かが同じ問題を抱えている場合、ここに私の修正があります:

NSIndexPath *index ;
for( int i=0; i<self.slices.contains.count; i++){
    index = [NSIndexPath indexPathForRow:i inSection:0];
    [self.tableView selectRowAtIndexPath:index animated:NO scrollPosition:UITableViewScrollPositionNone];
}

これにより、テーブルビューのすべてのセルが反復処理され、それらが選択されます (実際にそれらが

tableview indexPathsForSelectedRows
于 2014-10-02T11:56:11.513 に答える