plus duracion cambiar bateria apple iphone ios uiviewcontroller uinavigationcontroller

iphone - duracion - Eliminando viewcontrollers de la pila de navegación



duracion bateria iphone 7 (7)

Tengo una pila de navegación, con decir 5 UIViewControllers. Quiero eliminar los controladores de vista 3 y 4 en la pila con el clic de un botón en el 5to controlador de vista. ¿Es posible hacer esto? ¿Si es así, cómo?


Esta solución funcionó para mí en swift 4:

let VCCount = self.navigationController!.viewControllers.count self.navigationController?.viewControllers.removeSubrange(Range(VCCount-3..<VCCount - 1))

su índice de controlador de vista actual en la pila es:

self.navigationController!.viewControllers.count - 1


Primero puede obtener todos los controladores de visualización en el conjunto y luego, después de consultar con la clase de controlador de vista correspondiente, puede eliminar el que desee.

Aquí hay un pequeño fragmento de código:

NSArray* tempVCA = [self.navigationController viewControllers]; for(UIViewController *tempVC in tempVCA) { if([tempVC isKindOfClass:[urViewControllerClass class]]) { [tempVC removeFromParentViewController]; } }

Creo que esto hará que tu trabajo sea más fácil.


Si está tratando de pasar al controlador de 2da vista desde el controlador de 5ta vista (omitiendo el 3er y el 4to), le gustaría usar [self.navigationController popToviewController:secondViewController] .

Puede obtener el secondViewController desde la pila del controlador de navegación.

secondViewController = [self.navigationController.viewControllers objectAtIndex:yourViewControllerIndex];


Usa este código y disfruta:

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers]; // [navigationArray removeAllObjects]; // This is just for remove all view controller from navigation stack. [navigationArray removeObjectAtIndex: 2]; // You can pass your index here self.navigationController.viewControllers = navigationArray; [navigationArray release];

Espero que esto te ayudará.


Utilizar esta

if let navVCsCount = navigationController?.viewControllers.count { navigationController?.viewControllers.removeSubrange(Range(2..<navVCsCount - 1)) }

Se ocupará de ViewControllers de navigationController. viewControllers y también un navigationItems apilados en navigationBar.

Nota: asegúrese de llamarlo al menos después de viewDidAppear


Swift 2.0:

var navArray:Array = (self.navigationController?.viewControllers)! navArray.removeAtIndex(navArray.count-2) self.navigationController?.viewControllers = navArray


Swift 3 y 4

self.navigationController!.viewControllers.removeAll()

self.navigationController?.viewControllers.remove(at: "insert here a number")

Swift 2.1

eliminar todo:

self.navigationController!.viewControllers.removeAll()

eliminar en el índice

self.navigationController?.viewControllers.removeAtIndex("insert here a number")

Hay un montón de más acciones posibles como removeFirst, rango, etc.