2012-09-24 33 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

相關問題