Cuando ejecutamos una aplicación en iOS, la primera función que se llama es (_:didFinishLaunchingWithOptions:) en el AppDelegate. En el AppDelegate podemos encontrar, además, una serie de funciones que se ejecutan cuando cambia el estado de la aplicación (pasar a segundo plano, volver a prime plano, etc.). Con Xcode 11, al generar un nuevo proyecto aparece una nueva clase SceneDelegate. Pero, cuál es la función de SceneDelegate en iOS 13. Ahora, en la clase SceneDelegate en iOS 13 se ha cambiado el concepto de ventana (window) por el de escena (scene), ya que ahora una aplicación puede tener más de una escena. Es decir, que podremos abrir dos o más ventanas de una misma aplicación e interactuar entre ellas.

Funciones de la clase SceneDelegate

La principal función en la clase SceneDelegate es:

Por defecto, esta función crea la vista inicial, una nueva ventana (UIWindow), establece su controlador (rootViewController) y hace que sea la ventana principal (key window). En este caso, la instancia de UISceneSession que utilizamos en UIWindow (windowScene:) controla la ventana que el usuario ve.

Esta función, scene(_:willConnectTo:options:), también permite restaurar una escena si previamente ha sido desactivada (como, por ejemplo, al pasar a segundo plano).

En la clase SceneDelegate encontramos algunas de las funciones que había en la clase AppDelegate, pero referidas a las escena:

Una vez creada o reconectada una escena, el primer método que es llamado es sceneWillEnterForeground(_ scene:) cuando la escena va aparecer (ya sea porque se activa por primera vez o porque pasa de segundo a primer plano).

A continuación, se llama al método sceneDidBecomeActive(_ scene:), cuando la escena está preparada para recibir y responder a eventos del usuario.

Cuando la aplicación está a punto de dejar de responder a eventos del usuario, se llama al método sceneWillResignActive(_ scene:), y cuando pasa de primer a segundo plano, al método sceneDidEnterBackground(_ scene:).

Nuevas funciones de la clase AppDelegate

Por otro lado, en la clase AppDelegate aparecen dos métodos nuevos relacionados con las escenas, ya que ahora el nuevo ciclo de vida de las sesiones de la escenas está gestionado por UIApplicationDelegate:

Modificación en el fichero Info.plist

Junto con estos nuevos delegados, Xcode crea en el fichero Info.plist una nueva entrada (Application Scene Manifest):

Esta nueva entrada encontramos estos campos:

  • Enable Multiple Windows. Si su valor es TRUE, los usuarios podrán abrir múltiples ventanas de una aplicación (en iPadOS).
  • Scene Configuration. Contiene el campo Application Session Role, un array (por lo que podríamos tener múltiples configuraciones), cuyo primer item contiene un un nombre y un delegado para la escena.

Categorías: iOS 13Swift

0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme en Feedly