Ho una navigazione a 3 viewcontroller in cui A presenta il controller modale B, che presenta il controller modale C in tutti i passaggi successivi. C ha uno svolgimento a ritroso a B. Ha anche uno stacco indietro a A. Quando eseguo l'azione per C per rilassarsi in B, si svolge ma poi fa scattare B e torna ad A. Questo non è quello che voglio, voglio in questo caso resta su B. Di seguito vengono utilizzati i segui utilizzati da VC C.Unwind Segue iOS risale a 1 troppi VC
unwindCancel è per quando l'utente fa clic su un collectionViewCell e risale al VC B. prepareForUnwind è solo uno standard pulsante "Annulla" per VC A.
Qui di seguito è il codice per chiamare didSelectItem di svolgimento in VC C. Qui di seguito che è prepareForSegue in VC C.
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"unwindCancel" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"unwindCancel"]) {
GalleryDetailViewController *detailVC = segue.destinationViewController;
detailVC.colletionCount = self.indexPathToPass;
}
}
VC B rilassarsi in un file .m
-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{
[self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}
VC Un rilassarsi nel file di .m
-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
Ci sono 2 segui di svolgimento da C - uno indietro a B e uno indietro a A. – noobsmcgoobs
@noobsmcgoobs Ho ricreato la tua demo, il problema non esiste.Così immagino che dai il nome di un nome errato.Put "nslog "nei tuoi due metodi di svolgimento, e vedi quale è chiamato. – wj2061
@noobsmcgoobs Questo post è simile al tuo: http: //stackoverflow.com/q/33181577/4975761 – wj2061