Ho semplice UITableView
con una sezione e poche righe. Quando l'utente fa clic sul pulsante accessorio della cella (che è connesso con detailsSegue
. Voglio sapere quale riga della cella era. Quindi posso selezionare l'oggetto giusto dalla mia matrice e assegnarlo alla variabile dalla vista successiva.Come trovare indexPath per il pulsante accessorio toccato in tableView
Ho metodo usato delegato tableview:accessoryButtonTappedForRowWithIndexPath:
e il valore indexPath assegnato alla mia proprietà privata myRow
. che in prepareForSegue:sender:
metodo che ho usato il mio valore self.myRow.row
per selezionare oggetto giusto da array.
mio problema è che questi due metodi sembrano di eseguire in modo sbagliato. dal NSLog Posso vedere che il metodo prepareForSegue:sender:
viene eseguito per primo e il mio metodo delegato sta cambiando il valore di self.myRow
dopo di esso.
Quindi il metodo prepareForSegue:sender:
passa sempre oggetto errato alla vista successiva (quella che è stata precedentemente toccata).
Scusate per i miei ragazzi inglesi. Grazie per l'aiuto in anticipo.
-(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;
}
}
+1. Questo dovrebbe risolverlo. – iDev
Grande. Risolve il problema. Grazie. – Guferos