unwind ios uiviewcontroller unwind-segue

unwind - Relájese Segue iOS vuelve 1 demasiados VC



unwind segue programmatically swift 4 (2)

Tengo una navegación de 3 viewcontrollers donde A presenta el controlador modal B, que presenta el controlador modal C todo a través de segues. C tiene un ciclo de desenrollado de vuelta a B. También tiene un desenrollamiento de regreso a A. Cuando realizo una acción para que C se relaje en B, se desenrolla pero luego aparece B y vuelve a A. Esto no es lo que quiero, quiero en este caso para permanecer en B. A continuación se muestran los segues VC C utiliza.

unwindCancel es para cuando el usuario hace clic en un collectionViewCell y vuelve a VC B. prepareForUnwind es solo un botón de "cancelación" estándar para VC A.

A continuación se muestra el código para didSelectItem para llamar al desenrollado en VC C. A continuación se muestra prepareForSegue en 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 desenrollar en archivo .m

-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{ [self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES]; }

VC Un desenrollado en archivo .m

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue { }


Cuando vaya de C a B, no use un ciclo de desenrollado, simplemente haga que C call dismissViewController. Si está comprometido con el uso de segmentos de desenrollado, mire aquí específicamente la sección titulada Cómo un Segue de Desconexión Determina su Controlador de Vista de Destino


Supongo que confundiste el identificador de desenrollar-segue con el método de Acción desenrollar-segue.

Si construye un desenrollado segue con la acción "prepareForUnwind", y luego cambia este identificador de desenrollado-segue a "unwindCancelar". El problema aparecerá.

Solo asegúrese de que el identificador de desenrollar-segue coincida con su método de acción.