iphone - bar - ¿Cómo eliminar un controlador de vista específico de la pila uinavigationcontroller?
navigation controller swift 4 example (2)
Aquí está mi solución. Puede establecer la etiqueta o una propiedad fija para sus controladores de vista, luego puede atravesar la pila de uinavigationcontroller para buscar el controlador de vista objetivo (vcToRemove) y eliminarlo. Esto podría ser más seguro. El código:
NSInteger tag = vcToRemove.wvTag;
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: vcToRemove.navigationController.viewControllers];
int i = 1;
for (i = 1; i <=[allViewControllers count]; i++) {
UIViewController *vc = [allViewControllers objectAtIndex:i];
if ([vc isKindOfClass:[MyWebViewController class]]) {
if (((MyWebViewController *)vc).wvTag == tag) {
[allViewControllers removeObjectAtIndex:i];
break;
}
}
}
vcToRemove.navigationController.viewControllers = allViewControllers;
Tengo un controlador de uinavigation. Después de iniciar sesión, quiero eliminar viewcontrollers como RegisterViewController, LoginViewController, etc. de la pila UInavigationcontroller ..
Quiero decir que tengo que eliminar un controlador de vista particular de la pila? Como es posible. ?
Revisé esta publicación
Así que podemos tomarlo en una matriz como
NSArray *allviewcontrollers= [(UINavigationController *)navigationController viewControllers];
Pero cómo hacer un proceso adicional ... Esta pregunta me está persiguiendo durante mucho tiempo ... Por favor, responda ... Gracias de antemano
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[allViewControllers removeObjectIdenticalTo: removedViewController];
navigationController.viewControllers = allViewControllers;