1

我的tableView的每個單元都有一個UISwitch作爲accessoryView的:當用戶點擊它激活細胞的附件視圖(UISwitch)時didSelectRowAtIndexPath方法被稱爲

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; 
cell.accessoryView = mySwitch; 
[mySwitch addTarget:self action:@selector(SwitchToggle:) forControlEvents:UIControlEventValueChanged]; 

開關切換,但我也希望它切換時didSelectRowAtIndexPath被調用(當用戶點擊該單元格時)。

我嘗試這樣做(但它不工作):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UISwitch *tempSwitch = (UISwitch *)[tableView cellForRowAtIndexPath:indexPath].accessoryView; 
    [tempSwitch addTarget:self action:@selector(SwitchToggle:) forControlEvents:UIControlEventValueChanged]; 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; // cell selection fadeout animation 
} 

感謝。

+0

當它「不起作用」時會發生什麼?根本沒有任何行動,就像'didSelectRowAtIndexPath:'不在那裏一樣? – dasblinkenlight 2012-02-20 20:35:15

回答

1

代碼必須是這樣的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UISwitch *tempSwitch = (UISwitch *)[tableView cellForRowAtIndexPath:indexPath].accessoryView; 
    [tempSwitch setOn:!tempSwitch.on animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

記住,您還需要更新您的模型。

+0

切換開關但不調用更新模型的(switchToggle :)動作。我會做一個解決方法來解決這個問題。謝謝! – budidino 2012-02-20 20:47:04

+1

「解決方法」將添加以下行:'[self switchToggle:tempSwitch];'。 – 2012-02-21 14:18:57

相關問題