Tengo un proyecto que se basa en la plantilla de aplicación basada en navegación. En AppDelegate están los métodos -applicationDidFinishLoading:
y -applicationWillTerminate:
. En esos métodos, estoy cargando y guardando los datos de la aplicación y almacenándolos en una variable de instancia (en realidad es un gráfico de objeto).
Cuando se carga la aplicación, carga MainWindow.xib, que tiene un NavigationConroller, que a su vez tiene un RootViewController. La nibName
propiedad RootViewController apunta a RootView (mi clase de controlador real).
En mi clase, deseo hacer referencia al objeto que creé en el -applicationDidFinishLoading:
método, para poder obtener una referencia a él.
¿Puede alguien decirme cómo hacer eso? Sé cómo hacer referencia entre objetos que he creado mediante programación, pero parece que no puedo encontrar la manera de volver atrás, dado que el paso intermedio se realizó desde el archivo NIB.
fuente
Si entiendo su pregunta, ¿desea hacer referencia a variables / propiedades de miembros en su objeto AppDelegate? La forma más sencilla es utilizar [[UIApplication sharedApplication] delegate] para devolver una referencia a su objeto.
Si tiene una propiedad llamada ventana, puede hacer esto:
UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window]; //do something with mainWindow
fuente
Aquí hay una alternativa portátil bien definida para iOS4.0 y superior:
UIApplication *myApplication = [UIApplication sharedApplication]; UIWindow *mainWindow = [myApplication keyWindow]; UIViewController *rootViewController = [mainWindow rootViewController];
o, en una línea,
UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
No olvide establecer la
rootViewController
propiedad de la ventana (digamos en IB) o esto funcionará.fuente
¡Defina una macro y úsela en cualquier lugar!
#define appDelegateShared ((AppDelegate *)[UIApplication sharedApplication].delegate)
En mi código: -
UIViewController *rootViewController = appDelegateShared.window.rootViewController;
fuente