如何知道在UITableView中打开哪一行

时间:2011-03-19 19:49:51

标签: objective-c ios4 uitableview uiswitch

我有一个UITableView myTable,每行都有UISwitch。

如何在switchChanged方法中找到更改开关的表的行号?

- (void) switchChanged:(id)sender {
    UISwitch* mySwitch = sender;
    NSLog( @"%d", mySwitch.on );
}

谢谢

2 个答案:

答案 0 :(得分:1)

一个建议可能是使用标签。

使用cellForRowAIndexPath:中的开关设置单元格时,可以将开关标记设置为行值。这样你就可以再次读出标签并得到行和项......

答案 1 :(得分:0)

如果您只有一个部分(或只有一个部分使用该方法的交换机),您可以将行号存储在交换机的tag属性中。或者,如果您将自己限制为合理数量的部分和行,则可以将部分编号存储在高N位中,将行编号存储在标记整数的低M位中(N + M <32以获得最佳结果)。 / p>

或者您可以使用交换机中的superview,直到找到UITableViewCell(使用isKindOfClass:进行测试),然后在表视图上使用indexPathForCell:来查找索引路径。

或者您可以将UISwitch子类化为具有存储索引路径的属性。

或者您可以使用objc_setAssociatedObject将索引路径与交换机相关联。