2012-09-24 34 views
1

我有一个包含四行的UITableView。每行都有一个带有DCRoundSwitch的自定义单元。值更改的事件在IB中链接到switchChanged方法。每一个需要的cellForRowAtIndexPath用开关新电池时我新小区的切换程序分配给伊娃这样我就可以控制它是这样的:在自定义单元格中的DCRoundSwitch在表上重新加载

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

后,我触摸开关的第一次完美的作品,引发switchChanged方法。

问题: 每次需要新的单元格或重新加载表格时,都会触发switchedChanged方法而不触及开关。我已经试过删除所有目标在switchChanged方法的结束,像这样,但它仍然没有奏效:

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

这工作完全使用UISwitch。

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

感谢

回答

1

尝试下面给出的变更事件UIControlEventTouchUpInside ...

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

此外,在西顿改变事件:动画:方法DCRoundSwitch.m文件

[self sendActionsForControlEvents:UIControlEventTouchUpInside]; 
+0

OK。会尝试。谢谢。 –

1

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

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

删除这两行:

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

您能否为您的代码添加一些评论以给出完整的答案 – user1211929

相关问题