aplicaciones que se espera tengan una consola del controlador de vista raíz

Recibo un mensaje dentro de la consola cuando ejecuto mi aplicación que dice:

2011-11-16 19: 17: 41.292 Juice [8674: 707] Se espera que las aplicaciones tengan un controlador de vista raíz al final del lanzamiento de la aplicación

He escuchado de otros que esto tiene que ver con el método didFinishLaunchingWithOptions

Si alguien tiene alguna sugerencia de por qué estoy recibiendo este error, sería muy apreciado.

Mi código para el método:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [window addSubview:tabBarController.view]; [window makeKeyAndVisible]; [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade]; return YES; } 

Deberías reemplazar el

 [window addSubview:tabBarController.view]; 

a

 [self.window setRootViewController:tabBarController]; 

Tal vez construiste tu proyecto con ‘ Empty Application ‘ y olvidaste establecer el rootViewController en tu didFinishLaunchingWithOptions (que existe en tu AppDelegate.m ).

Sin embargo, si construye su proyecto con ‘ Aplicación de vista única ‘ o algún otro tipo, el proyecto establecerá el rootViewController través de xib por defecto (que podría ser un MainWindow.xib en su proyecto).

Tuve el mismo problema en iOS 5, después de agregar un guión gráfico a un proyecto “vacío”. Resulta que tuve que eliminar todas las líneas en AppDelegate.m que establecieron valores en self.window .

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. //self.window.backgroundColor = [UIColor whiteColor]; //[self.window makeKeyAndVisible]; return YES; } 

Si tiene MainWindow.xib, asegúrese de configurar la interfaz principal en el resumen de Target en MainWindow.

La forma en que recibí este error Applications are expected to have a root view controller at the end of application launch para desaparecer, era para asegurar que el método loadView en mi controlador de vista raíz estaba llamando [super loadView] . Espero que esto ayude a alguien.

Intenta usar self.window lugar de window (si tu configuración tiene una window synthesized con algo como @synthesize window=_window; ):

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // Override point for customization after application launch.  [self.window addSubview:tabBarController.view];  [self.window makeKeyAndVisible];  [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];  return YES; } 

Segunda posibilidad:

En main.m, asegúrese de que el último argumento sea el nombre del delegado de la aplicación. En su caso, parece que debería ser:

 retVal = UIApplicationMain(argc, argv, nil, @"JuiceAppDelegate"); 

Solución:

Como dijo @ marcus13 en los comentarios a continuación. Esto se solucionó en esta respuesta SO: se espera que las aplicaciones tengan un controlador de vista raíz al final del lanzamiento de la aplicación al mover los métodos UIAlertView de -(void)viewDidLoad a -(void)viewDidAppear:(BOOL)animated

Otra causa:

Estaba en IB adjuntando Propietario de archivo a un nuevo ImageView pequeño que había arrastrado a la Vista. No lo había llamado un IBOutlet en el archivo .h, así que cuando presioné Ctrl, la nueva Imageview no figuraba como una posible conexión. La única posibilidad que se muestra en la pequeña caja negra era Ver. Debo haber hecho clic, inadvertidamente. Hice algunos cambios, luego ejecuté el progtwig y obtuve el error Root Controller. La solución era volver a conectar Propietario del archivo a la Vista inferior en la pantalla xib – IB.

Me encontré con este problema mientras construía un nuevo proyecto desde cero. Agregué un StoryBoard y construí toda la interfaz, pero no seleccioné una plantilla.

Al hacerlo de esta manera, debes asegurarte de 3 cosas principales:

Seleccione siempre su controlador inicial (TabBarcontroller o NavigationController) como la vista inicial en su Storyboard.

Cambia el código en tu Appdelegate.m de este

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 

a esto

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } 

Compruebe su archivo [ProjectName] -Info.plist. Si no hay una clave llamada “Nombre base del archivo del guión gráfico”, debe agregarla manualmente y establecer su valor en el nombre del archivo del guión gráfico (sin la extensión).

Después de hacer todos estos pasos, mi aplicación funcionó perfectamente.

También tuve el mismo problema. Todo lo que obtuve fue una pantalla negra. Resulta que había eliminado inadvertidamente:

 [self.window makeKeyAndVisible]; 

de mi código ¡Espero que esto ayude a alguien!

Tenía dos salidas asignadas para “ver” en el controlador de vista raíz del guión gráfico. Haga clic derecho en “ver controlador” y asegúrese de que solo hay una “vista”.

También tuve el mismo error al desarrollar una aplicación que utiliza la base de datos sqlite. Estaba mostrando alertView cuando falló la transferencia del archivo db. ¡Esto fue un error ya que no puede mostrar ningún popovers / alertview / actions sin ningún conjunto de rootViewController!

Lo solucioné asegurándome de que cualquier función que crea y muestra estas alertas / popovers / actionsheets se invoca después de

 self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; [someObject functionthatDisplayAlerts]; 

Sé que esta publicación es antigua, pero me encontré con esto hoy.

Es porque creé un UIAlertView en didFinishLaunchingWithOptions.

Suponiendo que no deberíamos estar haciendo esto porque lo comenté y el error desapareció. Eliminé mis comentarios y el error volvió.

La aplicación no falla, solo obtengo el error registrado.

Tuve el mismo problema con mi aplicación. Apareció cuando agregué otro controlador de vista a mi proyecto e intenté configurarlo como el controlador de vista raíz en AppDelegate. Probé varias soluciones, pero ninguna de ellas pudo solucionar el problema. Finalmente encontré la causa: tenía dos versiones localizadas del archivo MainWindow.xib (Uno para alemán y otro para localización en inglés). Así que eliminé el archivo en inglés y volví a conectar los IBOutlets en MainView.xib. Esto resolvió el problema.

No estoy seguro si esto ayudará a alguien más, pero si ha utilizado el constructor de interfaz para crear su ventana principal y ha realizado todos los enlaces entre el delegado, asegúrese de que no tiene el siguiente código dentro de la aplicación: didFinishLaunching …

 [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] 

Estaba teniendo el mismo error hasta que eliminé la línea anterior. ¡Espero que ayude!

EDITAR: ¿Hacer lo anterior ahora tiene mi método viewControllers viewDidAppear siendo llamado dos veces?

Si está utilizando Storyboard, pero creó un proyecto vacío, probablemente se olvidó de configurar el guión gráfico principal en su archivo * .storyboard en la pestaña Resumen en la configuración de su proyecto. Me ayudó a resolver este problema.

Si está comenzando desde un espacio en self.window.rootViewController = [[[ViewControllerName alloc] initWithNibName:@"ViewControllerName" bundle:nil] autorelease]; tiene que hacer esta adición a su archivo AppDelegate.m, para “apuntar” la ventana al paquete rootViewController ( self.window.rootViewController = [[[ViewControllerName alloc] initWithNibName:@"ViewControllerName" bundle:nil] autorelease]; )

Al igual que:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; self.window.rootViewController = [[[ViewControllerName alloc] initWithNibName:@"ViewControllerName" bundle:nil] autorelease]; [self.window makeKeyAndVisible]; return YES; }