2010-09-01 4 views
2

je créer ou plusieurs cellules remorque personnaliséeComment obtenir indexPath.row/chemin Lorsque je clique sur le commutateur dans une rangée?

chaque cellule possède un interrupteur à l'intérieur

Comment puis-je savoir quel commutateur dans la ligne que je clique

Ex.I cliquez sur le bouton dans la rangée 3, qu'il retournera indexPath.row = 3

et aussi l'état du commutateur est activé ou désactivé?

quel vide dois-je mettre?

Je sais qu'il est un moyen peut obtenir le retour de indexPath par:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

Mais je ne veux pas toucher la ligne, juste le commutateur ...

Oh, je fais un peu la recherche, mais il est juste un peu différent

How can keep track of the index path of a button in a tableview cell?

des idées?

Je souhaite que je peux poster ma capture d'écran, mais pas que je suis un nouvel utilisateur le système ne me permet pas de faire ce

Répondre

3

Lorsque vous créez le commutateur, mettre en place une cible et d'action pour elle:

[mySwitch addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged]; 

Ici, la cible self est votre UITableViewController, dans laquelle vous devrez implémenter la méthode (void) switchToggled:(id)sender pour gérer l'événement de contrôle. Le commutateur sera automatiquement envoyé à la méthode switchToggled sous la forme sender lorsqu'il est basculé. Comme cela (modifié par l'exemple UIButton vous lié):

- (void)switchToggled:(id)sender { 
    UISwitch *theSwitch = (UISwitch *)sender; 
    UITableViewCell *cell = (UITableViewCell *)theSwitch.superview; 
    UITableView *tableView = (UITableView *)cell.superview; 
    NSIndexPath *indexPath = [tableView indexPathForCell:cell]; 

    if(theSwitch.on) { 
     // switch turned on 
    } 
    else { 
     // switch turned off 
    } 
} 
+0

Hmmm..Il peut être le travail! Je l'essaie maintenant! Merci, comment puis-je être un bon programmeur comme vous? –

+0

Excusez-moi, je crée un LightCell0, et un TableViewController, je devez mettre ce code dans lequel? –

+0

Voir http://stackoverflow.com/questions/18919616/uitableviewcell-indexpath-crash-in-ios7 pour iOS7. Il existe des wrappers supplémentaires pour les vues de table et les cellules. J'ai dû utiliser: 'UITableViewCell * cell = (UITableViewCell *) switchControl.superview.superview; UITableView * tableView = (UITableView *) cell.superview.superview; ' – joshs

1

Lorsque le bouton est créé

button.tag = [indexPath row] 

Lorsque le bouton est sélectionné , tirez la ligne de la balise

int myRow = [(UIButton *)sender tag]; 
+0

Puis-je mettre cela en [LightSwitch addTarget: auto l'action: @selector (switchlightswitch) forControlEvents: UIControlEventValueChanged] ??? –

Questions connexes