Iphone UIControl(添加目标:操作:forControlEvents:)@选择器参数

Iphone UIControl(添加目标:操作:forControlEvents:)@选择器参数,iphone,selector,uicontrol,Iphone,Selector,Uicontrol,@选择或更新UFF: 这将自动发送参数:idsender。是否有可能将此覆盖为其他内容?在我的特殊用法中,实际的发送者是没有意义的 我正在使用UITableView并在每个单元格的UIAccessoryView插槽中设置UISwitch。最初,我将UISwitch添加到单元初始化之外的UIAccessoryView中,这允许每个UISwitch都是唯一的实例。然而,在iPhone3G上向下滚动长长的列表时,这会造成明显的延迟。如果在初始化单元时将UIAccessoryView添加到该单元中,则可

@选择或更新UFF:

这将自动发送参数:idsender。是否有可能将此覆盖为其他内容?在我的特殊用法中,实际的发送者是没有意义的

我正在使用UITableView并在每个单元格的UIAccessoryView插槽中设置UISwitch。最初,我将UISwitch添加到单元初始化之外的UIAccessoryView中,这允许每个UISwitch都是唯一的实例。然而,在iPhone3G上向下滚动长长的列表时,这会造成明显的延迟。如果在初始化单元时将UIAccessoryView添加到该单元中,则可以将其出列,而不是实例化,从而大大减轻延迟。不幸的是,这样做的代价是,该实例对于表中的每个UISwitch都不是唯一的,而且:idsender变得毫无意义

我需要两件事中的一件

重写参数的方法 与@selector关联,因此我可以 替换:idsender 或者一个比我现在使用的更好的策略 跟踪那些巫师。 我总是可以在创建/退出单元队列后添加UISwitch,但它非常缓慢且效率低下。谢谢你的帮助

真诚地,
Z@K!

我有一个类似的问题,我解决这个问题的方法是设置发送者的tag属性,每个视图都有这个属性,目的是帮助识别它。因此,在创建/退出单元格队列时,设置标记以标识单元格,并在操作中使用[sender tag]获取单击的上下文

设置标签。 设置关联对象请参见objc_setAssociatedObject 亚类UISwitch。添加一些属性。 子类UITableViewCell。添加一些属性。向上导航视图层次结构,直到到达一个表视图单元格,如while v&&![v iskindof类:[UITableViewCell类]]{v=v.superview;}。 向上导航视图层次,如上所述。调用[tableView indexPathForCell:UITableViewCell*v]。 如果有多个表视图,则可以继续向上导航,直到找到UITableView。。。
我编写了一个UISwitch子类,其中包含一个基于块的hander,用于值更改控制事件,这有助于跟踪哪个开关的值已更改。理想情况下,我们可以对组合而不是子类化做类似的事情,但这很适合我的需要

您可以这样使用它:

ZUISwitch *mySwitch = [ZUISwitch alloc] init];

[mySwitch onValueChange:^(UISwitch *uiSwitch) {
        if (uiSwitch.on) {
            // do something
        } else {
            // do something else
        }
    }];

您也可以从XIB文件中使用它,方法是将开关拖到视图上,然后将其类更改为ZUISwitch

,因为每个对象只有一个标记,我看不出这与使用指针有什么不同。我的问题是一个开关将被回收用于两个不同的指示器。这就是为什么我需要覆盖@Selector的原因。技巧是只将所需的数据设置到标记中,而不重新创建UISwitch,这是出列操作中代价高昂的操作,因此您可以在拥有唯一UISwitch的同时获得性能改进。您可以扩展吗?您能告诉我如何将重用的开关链接到一组指示器上吗?它不是为我点击。请尝试将数组索引保存在相关标记中,这样,当您返回标记时,您将能够获得它,这正是我想要的;你不能。标记标识一个重用的单元,它实际上与指向该单元的指针并没有什么不同,只是唯一地标识了它。每个标记都必须以某种方式链接到多个指示器。同样,我看不出这与使用指针有什么不同。我的问题是一个开关将被回收用于两个不同的指示器。添加属性没有帮助,标记没有帮助。我不知道什么是objc_setAssociatedObject,也不知道从哪里获取有关它的信息。我想你没有完全理解我的问题。如果我在后面添加附件视图,并为每个指示器使用一个唯一的开关,它可以正常工作,但速度非常慢。这就是为什么我需要覆盖@selector这个问题的答案是选项2,这使得1变得不必要。