如何获取indexPath.row / path当我单击Switch中的行时?

时间:2010-09-01 16:23:49

标签: iphone uitableview

我创建了两个或更多自定义单元格

每个单元格内都有一个开关

如何知道我点击的行中的哪个开关

ex.I点击第3行中的开关,它将返回indexPath.row = 3

并且开关状态是打开还是关闭?

我应该放入哪个空白?

我知道有一种方法可以通过以下方式获得indexpath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

但我不想触摸那一行,只是开关......

哦,我做了一些研究,但它只是有点不同

How can keep track of the index path of a button in a tableview cell?

任何想法?

我希望我可以发布我的屏幕截图,但不是我是新用户 系统不允许我这样做

2 个答案:

答案 0 :(得分:3)

创建交换机时,请为其设置目标和操作:

[mySwitch addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged];

此处,目标self是您的UITableViewController,您需要在其中实施方法(void) switchToggled:(id)sender来处理控件事件。切换时,交换机会自动将switchToggled方法作为sender方法发送给UIButton。像这样(从您链接的- (void)switchToggled:(id)sender { UISwitch *theSwitch = (UISwitch *)sender; UITableViewCell *cell = (UITableViewCell *)theSwitch.superview; UITableView *tableView = (UITableView *)cell.superview; NSIndexPath *indexPath = [tableView indexPathForCell:cell]; if(theSwitch.on) { // switch turned on } else { // switch turned off } } 示例修改):

{{1}}

答案 1 :(得分:1)

创建按钮时

button.tag = [indexPath row]

选择按钮时,将行拉出标记

int myRow = [(UIButton *)sender tag];