@selector(updateStuff:)
这是自动发送参数:(id)sender。是否可以将其覆盖为其他内容?在我的特定用法中,实际发送者毫无意义。
我正在使用UITableView并在每个单元格的UIAccessoryView插槽中设置UISwitch。最初,我将UISwitch添加到单元初始化之外的UIAccessoryView,这允许每个UISwitch成为一个唯一的实例。然而,当在iPhone 3G上向下滚动长列表时,这会产生明显的延迟。如果我在初始化时将UIAccessoryView添加到单元格中,它可以出列而不是实例化,并大大减轻了滞后。不幸的是,这样做的代价是,实例并不是表中每个UISwitch唯一的,并且:(id)发送者变得毫无意义。
我需要两件事之一......
在创建/出列单元格之后,我总是可以使用添加UISwitch,但它非常慢且效率低。谢谢你的帮助。
此致 ž@ķ!
答案 0 :(得分:4)
我遇到了类似的问题,我解决它的方法是设置发件人的“tag”属性,每个视图都有这个属性,目的是帮助识别它。因此,在创建/出列单元格时,设置标记以标识单元格,并在操作上使用[sender tag]来获取单击的上下文
答案 1 :(得分:1)
很多很多方面:
while (v && ![v isKindOfClass:[UITableViewCell class]]) {v = v.superview; }
)。[tableView indexPathForCell:(UITableViewCell*)v]
。答案 2 :(得分:0)
我编写了一个UISwitch子类,其中包含基于块的处理器,用于更改值控制事件,这有助于在尝试跟踪哪个交换机的值发生更改时有所帮助。理想情况下,我们可以使用组合而不是子类化来做类似的事情,但这很适合我的需要。
https://gist.github.com/3958325
你可以像这样使用它:
ZUISwitch *mySwitch = [ZUISwitch alloc] init];
[mySwitch onValueChange:^(UISwitch *uiSwitch) {
if (uiSwitch.on) {
// do something
} else {
// do something else
}
}];
您也可以在XIB文件中使用它,方法是将开关拖到视图上,然后将其类更改为ZUISwitch