调用 didSelectRowAtIndexPath 时激活单元格的附属视图 (UISwitch)
Posted
技术标签:
【中文标题】调用 didSelectRowAtIndexPath 时激活单元格的附属视图 (UISwitch)【英文标题】:Activate cell's accessory view (UISwitch) when didSelectRowAtIndexPath is called 【发布时间】:2012-02-20 20:30:50 【问题描述】: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
谢谢。
【问题讨论】:
当它“不起作用”时会发生什么?完全没有动作,好像didSelectRowAtIndexPath:
不存在?
【参考方案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];
请记住,您还必须更新模型。
【讨论】:
这会切换开关,但不会调用更新我的模型的 (switchToggle:) 操作。我会想办法解决这个问题。谢谢! “解决方法”是添加这一行:[self switchToggle:tempSwitch];
。以上是关于调用 didSelectRowAtIndexPath 时激活单元格的附属视图 (UISwitch)的主要内容,如果未能解决你的问题,请参考以下文章