1

我的 tableView 的每个单元格都有一个 UISwitch 作为附件视图:

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
}

谢谢。

4

1 回答 1

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];
}

请记住,您还必须更新模型。

于 2012-02-20T20:34:47.860 回答