Cambia entre dos UIWindow's

Estoy integrando Pushwoosh SDK para Push Notification, que está utilizando UIWindow para representar la página HTML enviada desde el portal Pushwoosh

 - (void) showWebView { self.richPushWindow.alpha = 0.0f; self.richPushWindow.windowLevel = UIWindowLevelStatusBar + 1.0f; self.richPushWindow.hidden = NO; self.richPushWindow.transform = CGAffineTransformMakeScale(0.01, 0.01); [UIView animateWithDuration:0.3 animations:^{ self.richPushWindow.transform = CGAffineTransformIdentity; self.richPushWindow.alpha = 1.0f; } completion:^(BOOL finished) { }]; } - (void) showPushPage:(NSString *)pageId { NSString *url = [NSString stringWithFormat:kServiceHtmlContentFormatUrl, pageId]; HtmlWebViewController *vc = [[HtmlWebViewController alloc] initWithURLString:url]; vc.delegate = self; vc.supportedOrientations = supportedOrientations; self.richPushWindow.rootViewController = vc; [vc view]; } 

Y al cerrar en la página HTML llama

 self.richPushWindow.transform = CGAffineTransformIdentity; [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ self.richPushWindow.transform = CGAffineTransformMakeScale(0.01, 0.01); self.richPushWindow.alpha = 0.0f; } completion:^(BOOL finished) { AppDelegate * appDelegate = (AppDelegate*)[[UIApplication shanetworkingApplication] delegate]; self.richPushWindow.hidden = YES; }]; 

Ahora quiero llamar a mi controller de vista al cerrar esta página HTML. Así que traté de presentar myviewcotrlller en esta finalización del bloque pero no myviewcotrlller .

En realidad, aquí el problema es que hay dos UIWindows en mi aplicación uno de aplicación y otro usado por sdk. Ahora, si trato de presentar el controller de vista desde esta página html, que está en una UIWindow separada, entonces crea una jerarquía separada y, cuando cierro esta window, también quita mi viewconroller presentado debido a la relación padre-hijo. Y si no cierra esta window, entonces cómo volver al flujo real de la aplicación.

Quiero que el nuevo controller se presente desde esa nueva window y después de que esa window se cierre y el flujo de la aplicación no se vea afectada por una window adicional. ¿Es posible? Si mi concepto es incorrecto, por favor ayuda si alguien tiene idea

Editar: la segunda uiwindow nunca es una window key, solo se vuelve visible al establecer el nivel de window más alto y se oculta

El problema es que, justo después de este bloque de finalización, richPushWindow desaparecerá, esto significa que está tratando de presentar el controller de vista en una window oculta.

La solución es muy simple. Use la window principal para presentar el controller de vista. Algún pseudocódigo:

Agregar vista desde ViewContoller a las subvistas de la window principal:

  1. [appDelegate.window addSubview: myViewController.view];

Modal:

  1. [appDelegate.window.rootViewController presentModalViewController: myViewController]

Uso de la jerarquía del controller de vista:

  1. Presiona tu viewController en la stack viewController principal. Por ejemplo, si tiene navigationController, solo presione allí.

¡Espero que ayude!