我有一个 UITableView myTable,它的每一行都有 UISwitch。
如何在我的 switchChanged 方法中找到开关更改的表的行号?
- (void) switchChanged:(id)sender {
UISwitch* mySwitch = sender;
NSLog( @"%d", mySwitch.on );
}
谢谢
我有一个 UITableView myTable,它的每一行都有 UISwitch。
如何在我的 switchChanged 方法中找到开关更改的表的行号?
- (void) switchChanged:(id)sender {
UISwitch* mySwitch = sender;
NSLog( @"%d", mySwitch.on );
}
谢谢
一个建议可能是使用标签。
当您设置带有开关的单元格时,cellForRowAIndexPath:
您可以将开关标签设置为行值。这样您就可以再次读出标签并获取行和项目...
如果您只有一个部分(或只有一个部分带有使用该方法的开关),您可以将行号存储在开关的tag
属性中。或者,如果您将自己限制为合理数量的节和行,则可以将节号存储在标记整数的高 N 位中,将行号存储在标记整数的低 M 位中(N+M < 32 以获得最佳结果)。
或者您可以superview
从开关中使用,直到找到 UITableViewCell(测试使用isKindOfClass:
),然后indexPathForCell:
在表格视图上使用以查找索引路径。
或者,您可以将 UISwitch 子类化以具有存储索引路径的属性。
或者您可以使用objc_setAssociatedObject
将索引路径与开关相关联。