¿Cómo eliminar una UIWindow?

Pensé que era fácil ya que [myWindow resignKeyWindow] y [self.window makeKeyAndVisible] pero supongo que no … ¿ [self.window makeKeyAndVisible] ustedes qué hacer?

Gracias 🙂

No invoque -resignKeyWindow directamente, se supuso que se reemplazó para ejecutar algún código cuando se elimina su UIWindows. Para eliminar la window anterior, debe crear una nueva instancia de UIWindow y hacerla -makeKeyAndVisible , la window anterior renunciará a su estado de key. En iOS 4 incluso recolectará basura de su UIWindow anterior , siempre que no tenga ninguna reference al mismo. Hacer esto en iOS 3.x tendría efectos desastrosos. Ya lo advertiste

La forma correcta de ocultar una window es establecer la propiedad hidden en SÍ. Para eliminarlo de la propiedad de windows de UIApplication, simplemente suelta la window (en ARC, establece todas las references a nil).

Por supuesto que querrías tener otra window en el lugar en este momento.

No puede eliminar la window del Delegado de aplicaciones. Sin embargo, puede eliminar cualquier window personalizada creada.

Para eliminar la window primero debe proporcionar un reemploop. Entonces obtenemos la window pnetworkingeterminada.

  AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; 

Ahora tenemos acceso a la window pnetworkingeterminada por la propiedad appdelegate.window.

Ahora obtenga el controller de navigation original o personalizado. Asigne self como rootviewcontroller.

Llamar a makekeyandvisible elimina cualquier window y asigna la window de appdelegates como window de key. Establecer rootViewController como NavigationController que acabas de crear y que eres bueno para Go!

  DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self]; [appDelegate.window makeKeyAndVisible]; appDelegate.window.rootViewController = demoNav; 

¡Gracias!

Tengo el mismo problema, puede ser útil.

Debe destruir todas las references fuertes antes de eliminar y desasignar una window, especialmente el rootWindowController. Creo que el código a continuación es suficiente para eliminar cualquier window:

  [self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; self.window.rootViewController = nil; [self.window resignKeyWindow]; [self.window removeFromSuperview];