1

呼び出されたときに、私のtableViewのすべてのセルはaccessoryViewとしてUISwitchました:ユーザーがそれをタップするとアクティブセルのアクセサリービュー(UISwitch)didSelectRowAtIndexPathが

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; 
cell.accessoryView = mySwitch; 
[mySwitch addTarget:self action:@selector(SwitchToggle:) forControlEvents:UIControlEventValueChanged]; 

スイッチがトグルされるが、私はまた、ときに切り替えたいですdidSelectRowAtIndexPathが呼び出されます(ユーザーがそのセルをタップすると)。

私はこれを試してみました(しかし、それは動作しません):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UISwitch *tempSwitch = (UISwitch *)[tableView cellForRowAtIndexPath:indexPath].accessoryView; 
    [tempSwitch addTarget:self action:@selector(SwitchToggle:) forControlEvents:UIControlEventValueChanged]; 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; // cell selection fadeout animation 
} 

感謝。

+0

「動作しない」とはどうなりますか?あたかも 'didSelectRowAtIndexPath:'が存在しないかのように、何もしないでください。 – dasblinkenlight

答えて

1

コードは次のようになります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UISwitch *tempSwitch = (UISwitch *)[tableView cellForRowAtIndexPath:indexPath].accessoryView; 
    [tempSwitch setOn:!tempSwitch.on animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

はあなたにも、あなたのモデルを更新する必要があることを忘れないでください。

+0

スイッチを切り替えるが、私のモデルを更新する(switchToggle :)アクションは呼び出さない。私はそれを解決するための回避策を作成します。ありがとう! – budidino

+1

"回避策"は、この行を追加することです: '[self switchToggle:tempSwitch];'。 –