1

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

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

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

谢谢

4

2 回答 2

1

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

当您设置带有开关的单元格时,cellForRowAIndexPath:您可以将开关标签设置为行值。这样您就可以再次读出标签并获取行和项目...

于 2011-03-19T20:01:40.103 回答
0

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

或者您可以superview从开关中使用,直到找到 UITableViewCell(测试使用isKindOfClass:),然后indexPathForCell:在表格视图上使用以查找索引路径。

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

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

于 2011-03-19T20:07:29.847 回答