Comment trouver indexPath pour le bouton accessoire tapé dans la tableVoir
J'ai simple UITableView
avec une section et en quelques lignes. Lorsque l'utilisateur clique sur la cellule accessoire bouton (qui est connecté avec detailsSegue
. Je veux savoir ce que la cellule de la ligne a été. De sorte que je peux choisir, à droite de l'objet de mon tableau et de l'affecter à la variable de la vue suivante.
J'ai utilisé la méthode du délégué tableview:accessoryButtonTappedForRowWithIndexPath:
et affecté indexPath valeur de ma propriété privée myRow
. Que dans prepareForSegue:sender:
méthode que j'ai utilisé mon self.myRow.row
valeur pour sélectionner le bon objet, de la matrice.
Mon problème est que ces deux méthodes semble exécuter dans un ordre incorrect. À partir de la NSLog je peux voir que prepareForSegue:sender:
méthode est exécuté en premier et mon délégué de la méthode est l'évolution de la valeur de self.myRow
après.
Donc prepareForSegue:sender:
méthode est toujours en passant mauvais objet à la vue suivante (celle qui a été tapé précédemment).
Désolé pour mon anglais, les gars. Merci pour l'aide à l'avance.
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
self.myRow = indexPath;
NSLog(@"tapped button at row: %i",self.myRow.row);
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"addSegue"]) {
AddViewController *avc = segue.destinationViewController;
avc.delegate = self;
}
else if ([segue.identifier isEqualToString:@"detailsSegue"]) {
NSLog(@"Segue row: %i",self.myRow.row);
Annotation *annotation = [self.viewsList objectAtIndex:self.myRow.row];
NSLog(@"Segue annotation object: %@",annotation.title);
DetailsViewController *dvc = segue.destinationViewController;
dvc.wikiKey = annotation.title;
}
}
source d'informationauteur Guferos
Vous devez vous connecter pour publier un commentaire.
Que vous avez découvert, le système vous envoie le
prepareForSegue:sender:
message avant il vous envoie letableview:accessoryButtonTappedForRowWithIndexPath:
message.Maisquand il vous envoie le
prepareForSegue:sender:
message, lesender
argument est leUITableViewCell
contenant de l'accessoire de vue. Vous pouvez l'utiliser pour déterminer le rang de l'accessoire bouton a été mis sur écoute:L'expéditeur sera l'accessoire bouton, à droite? Dans ce cas, vous devriez être capable de trouver son contenant des cellules en remontant par le biais de super points de vue et ensuite de récupérer le chemin d'index de la cellule. J'ai utilisé une méthode comme ça avant de faire la première partie:
//Je vous dis un simple et un meilleur et une option facile :-
//Solution :- Vous pouvez assigner étiquette pour bouton d'accessoire de vue dans cette méthode tableView
//Faire de la méthode que vous avez passé dans le sélecteur et d'obtenir la valeur tag et vous obtenez indexPath de l'accessoire de vue cliqué
C'est la façon la plus simple pour obtenir le indexPat de la ligne dans laquelle vous avez cliqué sur l'accessoire de vue.
Ce que vous devez faire est d'appeler la
segue
par programme à partir de la méthode du délégué. En supposant que vous êtes en utilisant des story-boards, vous aurez besoin de dissocier lesegue
dans le storyboard et dans votre délégué méthode d'utilisation: