tracer sistema seguridad operativo operación modos los internetwork ejecución configuracion comandos basica ios iphone ios4 multitasking uiapplicationdelegate

ios - sistema - Manejo de la aplicaciónDidBecomeActive-"¿Cómo puede un controlador de vista responder a que la aplicación se active?"



los modos de operación del sistema operativo de internetwork ios (4)

Con Swift 4, Apple aconseja a través de una nueva advertencia del compilador que evitemos el uso de #selector en este escenario. La siguiente es una forma mucho más segura de lograr esto:

En primer lugar, cree una varilla diferida que pueda ser utilizada por la notificación:

lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in // Do stuff }

Si necesita que se incluya la notificación real, solo reemplace _ con una notification .

A continuación, configuramos la notificación para observar que la aplicación se active.

func setupObserver() { _ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive, object: nil, queue: .main, using: didBecomeActive) }

El gran cambio aquí es que en lugar de llamar a #selector , ahora llamamos a la var creada anteriormente. Esto puede eliminar situaciones en las que se producen bloqueos de selector no válidos.

Finalmente, eliminamos al observador.

func removeObserver() { NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil) }

Tengo el protocolo UIApplicationDelegate en mi clase principal AppDelegate.m, con el método applicationDidBecomeActive definido.

Quiero llamar a un método cuando la aplicación vuelve desde el fondo, pero el método está en otro controlador de vista. ¿Cómo puedo verificar qué controlador de vista se muestra actualmente en el método applicationDidBecomeActive y luego realizar una llamada a un método dentro de ese controlador?


Cualquier clase en su aplicación puede convertirse en un "observador" para diferentes notificaciones en la aplicación. Cuando cree (o cargue) su controlador de vista, querrá registrarlo como observador para UIApplicationDidBecomeActiveNotification y especificar a qué método desea llamar cuando se envía esa notificación a su aplicación.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod:) name:UIApplicationDidBecomeActiveNotification object:nil];

¡No te olvides de limpiar después de ti! Recuerda retirarte como el observador cuando tu vista se vaya:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];

Más información sobre el Centro de notificaciones .


Swift 2 Equivalente :

let notificationCenter = NSNotificationCenter.defaultCenter() // Add observer: notificationCenter.addObserver(self, selector:Selector("applicationWillResignActiveNotification"), name:UIApplicationWillResignActiveNotification, object:nil) // Remove observer: notificationCenter.removeObserver(self, name:UIApplicationWillResignActiveNotification, object:nil) // Remove all observer for all notifications: notificationCenter.removeObserver(self) // Callback: func applicationWillResignActiveNotification() { // Handle application will resign notification event. }


Swift 3, 4 Equivalente:

añadiendo un observador

NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive), name: .UIApplicationDidBecomeActive, object: nil)

eliminando al observador

NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)

llamar de vuelta

@objc func applicationDidBecomeActive() { // handle event }