自定义单元格中的DCRoundSwitch表重新加载

时间:2012-09-24 14:58:24

标签: uitableview uiswitch

我有一个包含四行的UITableView。每行都有一个带DCRoundSwitch的自定义单元格。值更改事件在IB中链接到switchChanged方法。每次在cellForRowAtIndexPath中需要一个带有开关的新单元时,我将新单元的开关分配给一个ivar,这样我就可以这样编程控制它:

       self.categorySwitch = ((FilterViewCell *)cell).sectionSwitch; 

第一次触摸开关完美后,触发switchChanged方法。

问题: 每次需要新单元格或重新加载表格时,它都会触发切换的切换方法,而不会触摸开关。我已经尝试在switchChanged方法结束时删除所有目标,但它仍然无效:

       [theSwitch removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];

使用UISwitch完美无缺。

有什么建议吗? DCRoundSwitch似乎是一个很好的选择,我想使用它。

由于

2 个答案:

答案 0 :(得分:1)

尝试将事件更改为UIControlEventTouchUpInside,如下所示...

   [theSwitch removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];

同样在DCRoundSwitch.m文件中的setOn:animated:方法中更改事件

   [self sendActionsForControlEvents:UIControlEventTouchUpInside];

答案 1 :(得分:1)

在DCRoundSwitch.m文件中,找到方法:

- (void)setOn:(BOOL)newOn animated:(BOOL)animated ignoreControlEvents:(BOOL)ignoreControlEvents

删除这两行:

[[self allTargets] makeObjectsPerformSelector:@selector(retain)];
[[self allTargets] makeObjectsPerformSelector:@selector(release)];