Me sale el siguiente error en la consola:

Se espera que las aplicaciones tienen una raíz vista controlador en la final de lanzamiento de aplicaciones

A continuación es mi application:didFinishLaunchWithOptions método:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //Set Background Color/Pattern
    self.window.backgroundColor = [UIColor blackColor];
    self.tabBarController.tabBar.backgroundColor = [UIColor clearColor];
    //self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"testbg.png"]];

    //Set StatusBar Color
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];

    //Add the tab bar controller's current view as a subview of the window
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

En el Interface Builder, el UITabBarController‘s delegado /a está conectado a la Aplicación Delegado.

Alguien sabe como solucionar este problema?

  • Hacer un NSLog de sí mismo.tabBarController justo antes de hacer la asignación. El mensaje se activa sólo si el controlador es nula. Si es nulo, y se han asegurado de que las conexiones son correctas, tratar de crear una instancia del controlador en el código.
  • me acaba de limpiar y reconstruido
  • intentar comentar la inicialización de la Ventana.. comprobar esta respuesta stackoverflow.com/a/33958144/1293445

49 Comentarios

  1. 188

    Tuve este mismo problema. Revise su principal.m. El último argumento se debe establecer el nombre de la clase que implementa el UIApplicationDelegate protocolo.

    retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
    • ack, no importa, no me funcionó 🙁 Reinicia simulador de iOS, y bam, mismo problema.
    • ¿probar mi respuesta?
    • Otra opción es asegurarse de que la aplicación de delegado de clase es importado en los principales y el uso de NSStringFromClass. Que es como Xcode crea ahora el principal.m archivo. Por ejemplo: #import "AppDelegate.h y, a continuación, int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    • asegúrese de self.window se inicializa como self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    • He probado las opciones de arriba, no funciona para mí. Y yo no estoy usando un Guión gráfico.
    • Gracias Shivan Raptor, tuve que borrar la línea de mi appDelegate método didFinishLaunchingWithOptions 😉
    • No tuvo ningún efecto para mí mismo «se espera que las Aplicaciones …» mensaje después de hacer el cambio. La solución fue OrdoDei de la respuesta (véase más arriba o más abajo), que funcionó a la perfección.
    • Si usted ve una vista de blanco en el Simulador, pero espera a ver el diseño de un guión asegúrese de que se ha eliminado el código en que la raíz del delegado la función de «aplicación didFinishLaunchingWithOptions…» que se apunta al principal.m y sólo tienen «volver en SÍ;» en él.
    • hola iam stil llegar error como este:- error de Aserción en -[UIApplication _runWithMainScene:transitionContext:finalización:], /BuildRoot/Library/Caches/com.apple.xbs/Fuentes/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294

  2. 434

    Reemplazar en el AppDelegate

     [window addSubview:[someController view]];

    a

      [self.window setRootViewController:someController];
    • Este se deshizo de el mensaje para mí. Todavía no está mostrando una ventana posterior, pero que puede ser un problema diferente. Gracias.
    • Si usted está usando un UINavigationController usted debe primero [[UINavigationController] initWithRootViewController:tableViewController] y, a continuación, utilizar el código anterior [auto.ventana setRootViewController:auto.navigationController] para ajustar la ventana raíz del controlador de vista
    • Cocos2d tiene un comentario que dice «// AddSubView no funciona en iOS6 » por Lo que esta arreglado para mí, como yo estoy usando iOS 6.
    • El addSubview línea era una parte de la plantilla de proyecto en una primera versión de Xcode/SDK de iOS. Si la aplicación se remonta un largo camino, usted puede tener incluso si usted no la escribió.
    • hola estoy recibiendo este eroor :- *** error de Aserción en -[UIApplication _runWithMainScene:transitionContext:finalización:], /BuildRoot/Library/Caches/com.apple.xbs/Fuentes/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294 cómo resolver este
    • auto.de la ventana.rootViewController = auto.viewController; [self.ventana makeKeyAndVisible];
    • Esto no ayuda. Yo simplemente tenía que conectar el «rootViewController» punto de venta en el xib ventana a la navigationController.

  3. 69

    Tuve el mismo error al intentar cambiar el primer controlador de vista de que se ha cargado en

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Al principio yo no sabía realmente donde el error provenía, precisamente, así que me reducido y encontrar qué fue lo que salió mal. Resulta que yo estaba tratando de cambiar la pantalla de una vista antes de que realmente ocurrió en la pantalla. La solución por lo tanto, era mover este código en el viewcontroller que me estaba dando problemas de

    - (void)viewDidLoad

    a

    - (void)viewDidAppear:(BOOL)animated

    y el error dejaron de aparecer. Mi problema fue, específicamente, causados por la UIAlertView espectáculo.

    En su caso, le sugiero que visite el código en el tabBarController activa de vista controlador (como es probable que sea un problema en el que la vista controlador).
    Si eso no funciona, pruebe a ajustar el tiempo de inicio de configuración en el archivo nib en lugar de en el código o si quieres hacerlo en el código, trate de mover el código a la tabBarController activa de viewcontroller del método apropiado.

    Buena suerte!

    • Warkst, gracias por la respuesta. En mi caso, no me puedo mover el código de viewDidLoad: (sin adición de una bandera), ni debo tener para hacer esto. Independientemente, gracias por la sugerencia!
    • Encontré esto hoy y me alegro de que lo hizo – mismo problema – estaba mostrando una uialert un lanzamiento en viewDidLoad. Cambiado a viewDidAppear y funciona bien. No está seguro de qué mayor bien de Apple logra mediante el cambio esta en iOS5.
    • Gracias por la sugerencia de que la alerta de la vista de la causa, ese mismo problema me pasó a mí también.
    • Podría decirnos cuál es el código que había que quitar para determinarlo? Estoy usando mi viewDidLoad para muchas cosas, la configuración de todo el primer tiempo de cosas, tales como la adición de datos a la UITableView. No me puedo mover a viewDidAppear: porque sólo quiero que el fuego una vez.
    • Tuve que específicamente se mueven los métodos de asignación de init y para mostrar un UIAlertView. Supongo que si usted sólo quiere hacer las cosas una vez, podría agregar un valor booleano de la guardia para coger algún tipo de primera comportamiento de carga
    • El problema no era el malo de la función. El problema era que se estaban olvidando de la llamada [super viewDidLoad] en su viewDidLoad función, matar eficazmente la punta de carga. Lo mismo me ha sucedido más de una vez.
    • Gracias por mencionarlo @borrrden! Yo no me di cuenta pero que en realidad tiene mucho sentido
    • Gracias!!! Hice algo en el viewDidLoad, y pasar a la viewDidAppear, todo funciona bien…
    • Hola chicos, estoy recibiendo el mismo error como @Warkst y he creado el hilo aquí, alguien me puede ayudar a solucionar las cosas, por favor? stackoverflow.com/questions/14051129/…
    • hola estoy recibiendo este eroor :- *** error de Aserción en -[UIApplication _runWithMainScene:transitionContext:finalización:], /BuildRoot/Library/Caches/com.apple.xbs/Fuentes/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294 cómo resolver este

  4. 47

    Tengo este cuando se inicia con el «Vacío de la Aplicación de la plantilla» y, a continuación, añadir manualmente una XIB. Lo resuelto por la configuración de la principal Punta de nombre como sugiere Soleado. El paso que falta en este escenario es la eliminación de

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    de

    application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Como que se sobreponen a la instancia de la ventana creada en el archivo Xib. Esto es suponiendo que usted ha creado un ViewController y por cable con su ventana de la Aplicación y del Delegado en el archivo XIB así.

    • Este fijo que es para mí, demasiado. Yo estaba usando una pestaña de la aplicación con un Guión que yo estaba tratando de agregar CoreData a, y se topó con este problema.
    • lol si me agregue a esto tengo dos advertencias de que las ventanas de la Aplicación se espera que tengan una raíz de controlador de vista!!
  5. 46

    Esto me pasó a mí. Resuelto por la edición .plist archivo.
    Especifique el archivo nib nombre de la base.(Debe ser MainWindow.xib).
    Espero que esto ayude.

    Se espera que las aplicaciones tienen una raíz vista controlador en el extremo de inicio de la aplicación

    • Esto funcionó para mí! Esto funciona cuando se crea un proyecto vacío en Xcode 4.2, donde no MainWindow estar presente y de esta forma tenemos que conectarlo.
    • El problema para nosotros que sucedió cuando inadvertidamente se elimina el Principal archivo nib nombre de la base de’ la línea de la Información.plist’ archivo. La inserción de esta línea de nuevo se ha solucionado el problema.
    • También puede establecer esta en las propiedades del proyecto. Seleccionar el proyecto, su objetivo, esto se puede editar en Resumen -> iPhone / iPad Despliegue de la información.
    • este fue en realidad el problema para mí, lo que conduce a múltiples cuestiones relacionadas con la llamada viewDidLoad y viewWillAppear dos veces en el rootViewController. En mi caso la eliminación de esta fue la solución
  6. 27

    Me encuentro con el mismo problema hace poco, cuando la construcción de un proyecto con ios5 sdk.
    En la primera se fue construyendo y ejecutando correctamente, pero después de que apareció el error.

    En mi caso la solución fue bastante simple.

    Lo que faltaba, era que de alguna manera el Interfaz Principal de la propiedad en la ficha resumen de mi solicitud de destino fueron borrados. Así que se necesita para establecer de nuevo.


    Si este no es el punto, y si el tabBarController todavía es nil, siempre se puede crear mediante programación de su ventana y de la raíz de la controladora.
    Como un retroceso he añadido el siguiente código para mi proyecto

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    { 
        if (!window && !navigationController) {
            NSLog(@"Window and navigation controller not loaded from nib. Will be created programatically.");
            self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
            UIViewController *viewController1, *viewController2;
            viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
            viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
    
            self.tabBarController = [[[UITabBarController alloc] init] autorelease];
            self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
            self.window.rootViewController = self.tabBarController;
    
        }
        else {
            [window addSubview:[tabBarController view]];
        }
        [self.window makeKeyAndVisible];
        return YES;
    }

    Esto sólo funcionará si sho la solución se implementa también.

    • Esto funcionó para mí después de que también la implementación de sho de la solución.
    • Genial!!! Trabajó también para mí
  7. 24

    He actualizado a iOS9 y comenzó a recibir este error de la nada. Yo era capaz de solucionarlo, pero añadiendo el siguiente código a - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    NSArray *windows = [[UIApplication sharedApplication] windows];
    for(UIWindow *window in windows) {
        if(window.rootViewController == nil){
            UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
            window.rootViewController = vc;
        }
    }
    • Tengo la curiosidad de saber cuántas ventanas de su aplicación tenido y si todos tenían una raíz de controlador de vista. Gracias
    • NOTA: Esta respuesta es una solución y no solucionar la causa raíz. Consulte stackoverflow.com/a/33958144/1116061
    • Usted es un verdadero héroe!
  8. 21

    Ninguna de las anteriores sugerencias resuelto mi problema. El mío era este:

    Agregar:

    window.rootViewController = navigationController;

    después:

    [window addSubview:navigationController.view];

    en mi appdelegate del

    - (void)applicationDidFinishLaunching:(UIApplication *)application {
  9. 20
    • Seleccione su «Ventana» en su Archivo Nib
    • En «Atributos del Inspector de» Verificación «Visible en el Lanzamiento»

    Se espera que las aplicaciones tienen una raíz vista controlador en el extremo de inicio de la aplicación

    • Esto ocurre cuando la punta se crea el archivo manualmente.
    • Este fix funciona para regular punta modo – no modo de guión gráfico
    • Esto sólo se encuentra en Modo de Guión gráfico, creo.
    • Nope, este proyecto fue regular punta modo. Este es una captura de pantalla de Modo de Guión gráfico. «Visible en el Lanzamiento de» vs «Es la Inicial del Controlador de Vista».
    • Si la ventana de archivo nib creado manualmente, y «visible en el Lanzamiento» está desactivada de forma predeterminada solicitará este mensaje después de inicio de la aplicación, esta solucionar mi problema!
    • ¡OH, GRACIAS!!! Finalmente, una solución a este molesto aviso. Incluso si usted tiene makeKeyAndVisible no resuelve el problema. SÓLO se ha resuelto la advertencia para mí. GRACIAS!
    • «Esto sucede en regular punta modo – no modo de guión gráfico» No muy verdadero. Me estoy enfrentando el mismo problema con Storyboard también
    • por favor vea el enlace en mi comentario anterior – «Visible en el Lanzamiento» no se muestra en modo de Guión gráfico.
    • oh, sí Visible at Launch no está disponible en el guión gráfico. Pensé que significaba que el problema se produce sólo en la punta.
    • Lo que yo veo. He editado la última línea de mi respuesta a aclarar.

  10. 19

    cómo agregar un RootViewController para iOS5

    si la aplicación no utiliza un RootViewController hasta ahora,
    basta con crear una 😉 por golpear a Archivo > Nuevo > Nuevo Archivo;
    seleccione UIViewController subclass
    nombre RootViewController, desactive la casilla Con XIB para la interfaz de usuario (asumiendo que ya tiene uno)
    y poner este código en el AppDelegate :: didFinishLaunchingWithOptions

    rootViewController = [[RootViewController alloc] init];
    window.rootViewController = rootViewController;

    seguro – usted tiene que importar RootViewController.h y crear la variable

    aquí es un buen artículo acerca de la RootViewController y el AppDelegate,

    • El cupsofcocoa.com artículo enlace está muerto – alguna idea de si hay una copia en algún lugar?
    • esto ha trasladado a binpress.com, se ha actualizado el enlace en la respuesta
    • Eso es un gran enlace. Buena lectura y explica lo que está sucediendo. Sólo me encontrado con este problema así como también el uso de un viejo libro (ya que quiero aprender Objective-C), pero la escritura de código en la última versión de XCode 7, que no tiene las plantillas anteriores.
  11. 11

    También he tenido este error, pero, a diferencia de las respuestas enumeradas anteriormente, el mío era porque me tenía sin comentar el método ‘loadView’ en mi recién generado controlador (xcode 4.2, ios5).

     //Implement loadView to create a view hierarchy programmatically, without using a nib.
    - (void)loadView  
    {
    }

    Incluso me dijo que el método para la creación de la vista mediante programación, pero me lo perdí porque parecía muy similar a la de otros métodos como el de viewDidLoad que yo uso normalmente yo no lo cogí.

    Para resolver simplemente quite ese método si no de crear mediante programación el punto de vista de la jerarquía aka el uso de la plumilla o guión gráfico.

    • Puedo confirmar que esto puede provocar el problema. Yo tenía la misma situación, siguiendo el tutorial de formato tableview donde se crean conjunto de los delegados en loadView. Después de mudarse de ese código para viewDidLoad y la eliminación de la loadView, todo comenzó a trabajar como sea necesario.
    • Todavía se puede hacer uso de la carga de la vista, pero añade [super loadView]; en su inicio.
    • Hmm… la documentación de loadView específicamente a los estados que no debe llamar la super método.
    • Me pasó por encima del valor predeterminado UIViewController en un guión y encontró que el código de la plantilla para la creación de un UIViewController subclase tiene loadView activado por defecto causante de esto para mí… desperdicia más de una hora en esta tontería. Gracias por publicar esto!
  12. 11

    tengo este problemas. tengo mi proyecto en xcode4.2.1. he leído todos los comentarios de arriba, pero no es fresco para mí. después de un tiempo, me parece que me comentó un trozo de código.

    //self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    entonces yo sin comentar esto. todo está bien para mí.
    espero que esto sería útil para los chicos.

    • El código: «auto.ventana = [[UIWindow alloc] initWithFrame:[[UIScreen pantalla principal] límites]];» causa un error, así que lo borré.
  13. 11

    Asegúrese de que tiene esta función en su aplicación delegado.

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

    Asegúrese de didFinishLaunchingWithOptions devuelve SÍ. Si usted pasó a quitar el «retorno SÍ’ de la línea, esto va a provocar el error. Este error puede ser especialmente común con guión de los usuarios.

    • muchas felicitaciones, esto es lo que yo quería (proyecto vacío con storyboard)
    • Mismo aquí. Gracias. Si usted crear vacío de la aplicación, este método se llena con la creación manual de la ventana. Este debe ser cambiado a simplemente volver en SÍ. Thx
  14. 10

    Con mi primer punto de vista de MenuViewController he añadido:

    MenuViewController *menuViewController = [[MenuViewController alloc]init];
    self.window.rootViewController = menuViewController;

    sobre la Aplicación de método Delegado:

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

    Que trabajó.

  15. 10

    Hubo un ligero cambio en torno a iOS 5.0 o así, que requieren que usted tenga una raíz de controlador de vista. Si el código se basa en la muestra más antigua de código, tales como GLES2Sample, entonces ninguna raíz de controlador de vista fue creado en los ejemplos de código.

    Corregir (que GLES2Sample, por ejemplo), a la derecha en applicationDidFinishLaunching, puedo crear una raíz de vista controlador y conecte mi glView a ella.

    - (void) applicationDidFinishLaunching:(UIApplication *)application
    {
      //To make the 'Application windows are expected
      //to have a root view controller
      //at the end of application launch' warning go away,
      //you should have a rootviewcontroller,
      //but this app doesn't have one at all.
      window.rootViewController = [[UIViewController alloc] init];  //MAKE ONE
      window.rootViewController.view = glView; //MUST SET THIS UP OTHERWISE
      //THE ROOTVIEWCONTROLLER SEEMS TO INTERCEPT TOUCH EVENTS
    }

    Que hace la advertencia desaparece, y en realidad no afecta a su aplicación, de lo contrario.

  16. 9

    Intente conectarse IBOutlet de la pestaña de la barra de controlador a raíz de ver en la Interfaz del Generador en lugar de

    self.window.rootViewController = self.tabBarController;

    Pero en realidad no he visto ese error antes.

    • No, eso no funciona. Gracias por su ayuda!
  17. 8

    He solucionado el problema haciendo lo siguiente (ninguna de las otras soluciones anteriores ayudó):

    Desde el menú desplegable asociado con la «Interfaz Principal» seleccionar otra entrada y, a continuación, vuelva a seleccionar «MainWindow» luego reconstruir.

    Se espera que las aplicaciones tienen una raíz vista controlador en el extremo de inicio de la aplicación

    • +1 , muchas Gracias…. Tengo el mismo problema y puede ser resuelto sólo por su respuesta.. Gracias 🙂
  18. 8

    Me encontré con el mismo problema, pero yo estaba usando storyboard

    La asignación de mi storyboard InitialViewController a mi ventana rootViewController.

    En

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    ...
    UIStoryboard *stb = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
    self.window.rootViewController = [stb instantiateInitialViewController];
    return YES;
    }

    y ya esta resuelto el problema.

  19. 7

    Empecé a tener este mismo problema después de actualizar a Xcode 4.3, y sólo al momento de iniciar un proyecto desde cero (es decir, crear proyecto vacío, a continuación, crear un UIViewController y, a continuación, Cree un archivo nib).

    Después de poner TODAS las líneas que he usado, y garantizar tenía las conexiones correctas, yo seguía recibiendo ese mensaje de error, y el archivo nib que yo estaba tratando de cargar a través de la vista controlador (que fue establecido como el rootController) que nunca se mostró en el simulador.

    He creado una única plantilla de vista a través de Xcode y la comparó con mi código y, FINALMENTE, encontró el problema!

    Xcode 4.3 aparece para agregar por defecto, el método -(void)loadView; para el controlador de vista de sección de implementación. Después de leer atentamente los comentarios dentro de ella, quedó claro cuál era el problema. El comentario indicado para reemplazar loadView método si la creación de una vista mediante programación (y estoy parafraseando), de lo contrario NO invalidar loadView si el uso de una punta. No había nada más dentro de este método, por lo que en efecto estaba reemplazar el método (y no hacer nada), MIENTRAS que el uso de un archivo nib, que dio el error.

    La SOLUCIÓN sea eliminar completamente el loadView método de la sección de implementación, o llamar al método padre mediante la adición de [super loadView].

    Extracción sería mejor si se utiliza un archivo NIB como la adición de cualquier otro código, en efecto, anular la misma.

    • ese era exactamente mi problema! Yo había añadido un loadView aplicación, pero no llamar a super. Hizo algunos otros cambios en el código, no podía recordar de qué diablos hice. Me tiene atrapado durante 2 horas debido a que el cambio parecía tan inofensivo.
  20. 6

    Yo tenía este mismo mensaje de error en el registro. Yo tenía un UIAlertView de pop-up en la aplicación:didFinishLaunchingWithOptions. Lo resuelto por retrasar la llamada a la alertView para dar tiempo a la raíz del controlador de vista del acabado de la carga.

    De aplicación:didFinishLaunchingWithOptions:

    [self performSelector:@selector(callPopUp) withObject:nil afterDelay:1.0];

    que las llamadas después de 1 segundo:

    - (void)callPopUp
    {
        //call UIAlertView
    }
    • Gracias, ya esta resuelto mi problema. Usted debe esperar para mostrar la alerta hasta después de que la ventana está cargado. En mi caso me acabo de hacer [alerta performSelector:@selector(mostrar) withObject:nil afterDelay:1.0];
  21. 6

    Yo tenía el mismo problema. Si usted está construyendo una ventana de aplicación basada en «partir de cero», como yo, usted necesitará hacer lo siguiente: (nota, estos son los pasos para Xcode 4.2.)

    0. Asegúrese de que su aplicación delegado se ajusta a la UIApplicationDelegate protocolo.

    Por ejemplo, supongamos que nuestro delegado se llama MyAppDelegate. En MyAppDelegate.h, deberíamos tener algo como esto:

    @interface MyAppDelegate : 
        NSObject <UIApplicationDelegate> //etc...

    1. Especifique la aplicación delegado principal.m

    Por ejemplo,

    #import "MyAppDelegate.h"
    
    int main(int argc, char *argv[])
    {
      @autoreleasepool {
        return UIApplicationMain(argc, argv,
          nil, NSStringFromClass([MyAppDelegate class]));
      }
    }

    2. Crear una ventana principal de la interfaz de archivo.

    Para hacer esto, haga clic derecho en el proyecto y elija Archivo Nuevo. Desde allí, seleccione Ventana de la iOS -> sección de Interfaz de Usuario.

    Después de agregar el archivo a su proyecto, ir al proyecto del resumen (clic izquierdo sobre el proyecto, haga clic en resumen.) En el iPhone/iPod de Despliegue de Información (y la correspondiente iPad sección si te gusta) y seleccione el nuevo archivo de interfaz en la «Interfaz Principal» cuadro combinado.

    3. Gancho de todo en la interfaz del editor de

    Seleccione el archivo de interfaz en la lista de archivos para que aparezca la interfaz del editor.

    Asegúrese de que las Utilidades panel está abierto.

    Agregar un nuevo Objeto arrastrando un Objeto de la lista de Objetos en el panel de Utilidades para el espacio por encima de debajo de la Ventana de objetos. Seleccione el objeto. Haga clic en la Identidad del inspector en el panel de Utilidades. Cambiar la Clase de la aplicación del delegado (MyAppDelegate, en este ejemplo).

    Abrir el inspector de conexiones para MyAppDelegate. Conecte la ventana de salida a la Ventana de la que ya existe en el archivo de interfaz.

    Haga clic en el Archivo del Propietario de la izquierda y, a continuación, haga clic en la Identidad del inspector en el panel de Utilidades. Cambiar la Clase a UIApplication

    Abrir el inspector de conexiones para el Dueño del Archivo. Conecte el delegado de la toma de corriente a la MyAppDelegate objeto.

    4. Por último, y muy importante, haga clic en la Ventana de objetos en el archivo de interfaz. Abrir los Atributos del inspector. Asegúrese de que «Visible en el Lanzamiento» está marcada.

    Eso es todo lo que tenía que hacer para conseguir que funcione para mí. Buena suerte!

  22. 6

    Si utiliza MTStatusBarOverlay, a continuación, obtendrá este error.

    MTStatusBarOverlay crea una ventana adicional ([[UIApplication sharedApplication] windows), que no tienen una raíz controlador.

    Esto no parece causar un problema.

    • Está usted seguro de eso? Lo has probado?
    • Estoy seguro de que crea una ventana de & estoy seguro de que no crea un problema en mis aplicaciones.
    • Usted puede establecer un muñeco de VC para el MTStatusBarOverlay solucionarlo.
    • Esto fue exactamente mi problema. Había un tipo similar de la instalación con una ventana en la que se ha añadido una barra de notificación, y una vez me comentó que el error desapareció! Parece ser inofensivo en este caso.
  23. 6

    Recibido el mismo error después de la sustitución de mi interfaz de usuario con un Guión gráfico, utilizando XCode 4.6.3 y iOS 6.1

    Resuelto por la limpieza de todo el código de didFinishLaucnhingWithOptions en el AppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        return YES;
    }
    • Esto también se deshizo de el error para mí también. Pero, ¿por qué?
  24. 5

    OrdoDei dio una correcta y valiosa respuesta. Voy a agregar esta respuesta sólo para dar un ejemplo de un didFinishLaunchingWithOptions método que utiliza su respuesta, así como contabilidad para los comentarios de los demás respecto a la Navegación del Controlador.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
        //Override point for customization after application launch.
    
        //Instantiate the main menu view controller (UITableView with menu items).
        //Pass that view controller to the nav controller as the root of the nav stack.
        //This nav stack drives our *entire* app.
        UIViewController *viewController = [[XMMainMenuTableViewController alloc] init];
        self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
    
        //Instantiate the app's window. Then get the nav controller's view into that window, and onto the screen.
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        //[self.window addSubview:self.navigationController.view];
        //The disabled line above was replaced by line below. Fixed Apple's complaint in log: Application windows are expected to have a root view controller at the end of application launch
        [self.window setRootViewController:self.navigationController];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
  25. 4

    Esto ocurrió porque me inadvertidamente comentado:

    [self.window makeKeyAndVisible];

    de

    - (BOOL)application:(UIApplication*) didFinishLaunchingWithOptions:(NSDictionary*)
  26. 4

    Yo era capaz de fijar la vista inicial del controlador en la pantalla de resumen de xcode.

    Haga clic en en la parte superior de la nombre del proyecto en la mano izquierda del explorador de archivos (que debe de tener un poco de planos icono). En el centro de la columna, haga clic en su nombre de proyecto bajo ‘OBJETIVOS’, (se debe tener un poco de lápiz ‘Un’ icono junto a él). Busca en ‘iPhone /iPod Despliegue de la Información «y buscar» de la Interfaz Principal’. Usted debe ser capaz de seleccionar una opción de la lista desplegable.

  27. 4

    En la parte superior de «sho» la respuesta, que es la correcta (cuarto parámetro de UIApplicationMain debe ser el nombre de la controladora principal), puedo agregar algunos comentarios.

    Recientemente he cambiado el «modelo» de una aplicación de la mina del uso de MainWindow.xib para la construcción de una ventana a través de programación. La aplicación utiliza una plantilla antigua que crea que MainWindow automáticamente. Desde que yo quería apoyar a un controlador diferente ver XIB para el iPhone 5, es más fácil elegir el derecho XIB a través de programación cuando la Aplicación se crea el Delegado. He quitado MainWindow.xib de proyecto así.

    Problema fue que se me olvidó llenar el cuarto parámetro en UIApplication principal y se me OLVIDÓ QUITAR MainWindow de «Interfaz Principal» en el Resumen del Proyecto.

    Esto causó un GRAN problema: se dictó la inofensivo advertencia «se espera que las Aplicaciones…» en el desarrollo de dispositivos, pero cuando se fue a la App Store, que se rompió en el consumidor de teléfonos, bloquea debido a MainWindow ya no estaba en el paquete! Tuve que solicitar una revisión acelerada para la corrección de errores.

    Otro síntoma es que a veces blanco, bloque, como un espacio en blanco UIView, se que a veces aparecen cuando la Configuración se ha cambiado y la aplicación se puso en primer plano. En el iPhone 5 era claro que era un 320×480 bloque. Tal vez la falta de MainWindow estaba siendo creado en el modo de desarrollo, utilizando el tamaño anterior. Acababa de encontrar este error cuando los primeros reportes de la caída llegó a la bandeja de entrada.

    Instalar la aplicación desde la App Store en lugar de desde XCode mostraron que la aplicación, de hecho, se estrelló, y la ventana principal problema se reveló a sí mismo en el registro, por lo que pude ver que no era algo de especial combinación de dispositivos de+las versiones de IOS.

  28. 4

    Para agregar a Mike Flynn respuesta, ya que la actualización a Xcode 7 y ejecutar mi aplicación en iOS 9 dispositivo, he añadido esto a mi (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    //Hide any window that isn't the main window
    NSArray *windows = [[UIApplication sharedApplication] windows];
    for (UIWindow *window in windows) {
        if (window != self.window) {
            window.hidden = YES;
        }
    }
    • Tengo la curiosidad de saber cuántas ventanas de su aplicación tenido y si todos tenían una raíz de controlador de vista. Gracias
  29. 3

    Este problema ocurre cuando usted no tiene el Interface Builder configurado correctamente.

    Asegurar que su Aplicación Delegado de la ventana y viewController enchufes están conectados:

    En tu ventana principal.xib, mantenga pulsada la tecla control, haga clic en Aplicación de Delegado y arrastrar a la Ventana de objetos. Seleccione ventana. Mantenga pulsada la tecla control y seleccione la Aplicación delegado de arrastre de nuevo, a raíz de vista controlador y seleccione viewController.

  30. 3

    Este error también se muestran cuando el dueño del archivo de la ventana principal.xib está configurado incorrectamente.

    Del propietario del archivo es UIApplication
    ->se inserta el objeto de la aplicación de delegado de clase con ventana de salida conectado a la ventana

    • He creado un archivo xib manualmente y comenzó a recibir este error. muchísimas gracias!
  31. 3

    Estaba recibiendo este error (Applications are expected to have a root view controller at the end of application launch), y yo era la creación de la vista de los controladores de programación.

    Resuelto por garantizar la loadView método en mi raíz vista controlador estaba llamando [super loadView].

    • Por el iOS 6.1 documentación para loadView, «personalizado la aplicación de este método no debe llamar a super.» creo que el curso de acción preferido de acción es self.view = [[UIView new] autorelease];.
  32. 1

    Asegurarse de que su «Es la Inicial del Controlador de Vista» está correctamente configurada para su primera escena.Se espera que las aplicaciones tienen una raíz vista controlador en el extremo de inicio de la aplicación

    Que es lo que está causando el error.

    • Me parece que no tiene esa opción en cualquier lugar. Veo exactamente la misma pantalla, sin el Escena Inicial opción.
    • asegúrese de que su selección del controlador de vista. puede hacer clic en en la barra superior donde la batería se muestra. si usted ha seleccionado correctamente la totalidad de la vista controlador dispondrá de un halo azul alrededor de ella.
    • Creo que esta opción está en el guión solo editor.
    • ah, ya, el no uso de eso.
  33. 1

    Este error me golpeó de repente. Así que, ¿qué lo causó?

    Resulta que yo estaba en IB adjuntar Archivo Propietario de un pequeño ImageView me había arrastrado a la Vista. No me había llamado un IBOutlet en el .h archivo, así que cuando me ctrl-arrastró a ella, la nueva Imageview no fue incluido como una posible conexión. La única posibilidad que se muestran en la pequeña caja negra fue Vista. Debo de haber hecho clic, de forma inadvertida. Hice un par de cambios, a continuación, ejecutar el programa y consiguió la Raíz del error del Controlador. La revisión se llevó a reconectar el Propietario del Archivo a la Vista de la parte inferior en el xib – IB de la pantalla.

  34. 1

    Suena como self.tabBarController está volviendo nil. tabBarController probablemente no está cableado en el Interface Builder. Establecer el IBOutlet de tabBarController a la tabBarController en el Interface Builder.

    • No, eso no funciona. Gracias por su ayuda!
  35. 1

    Aunque muchas de estas respuestas parecen válidas, ninguno de ellos se fija el mensaje para mí. Estuve experimentando con el vacío de la plantilla de aplicación y tratando de cargar directamente a una .xib archivo para la comprensión de la causa (como a la vieja ventana de la plantilla). Parece que Apple dejó una NSLog mensaje.

    Yo estaba en Xcode 4.3 y nada parecía deshacerse de el mensaje y quería saber por qué. Finalmente, me decidí a ver lo que iba a suceder en Xcode 4.5 (preview/iPhone 6.0 build) y el mensaje ya no existe. De pasar.

  36. 1

    Me encontré con esto en una aplicación de iPad de la orientación de iOS 5.1 en Xcode 4.5.1. La aplicación utiliza UITabBarController. Yo necesitaba una nueva sección dentro de la pestaña de la barra de controlador, así que he creado un nuevo controlador de vista y xib. Una vez que he añadido el nuevo controlador de vista de la pestaña de la barra de controlador, ninguno de mis controles en pantalla trabajado más, y llegué a la «espera que tenga una raíz de controlador de vista de» inicio de sesión.

    De alguna manera el objeto de nivel superior en el nuevo xib fue UIWindow en lugar de UIView. Cuando se me cayó una UIView en el XIB, tenía la vista del punto de salida para que, movido todas las subvistas en el nuevo UIView, y se eliminan de la UIWindow instancia, el problema se ha solucionado.

  37. 1

    He tenido este error demasiado, pero no hay respuesta ya mencionados fue la solución de mi problema.
    En mi caso la pantalla de registro fue debido al hecho de que fue la asignación de la raíz de la aplicación de controlador de vista en otro sub-hilo.

    -(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions
    {
        ...
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(queue, ^{
            ...
            dispatch_async(dispatch_get_main_queue(), ^{
                ...
                [self updateTabBarTitles];
                self.window.rootViewController = self.tabBarController;
                ...
            });
        });
    
        [self.window makeKeyAndVisible];
        return YES;
    }

    Moviendo el rootViewController de la asignación a la final de la función, justo antes de la llamada a makeKeyAndVisible: – hace que el mensaje de registro, no se mostrará de nuevo.

    {
        ...
        self.window.rootViewController = self.tabBarController;
        [self.window makeKeyAndVisible];
        return YES;
    }

    Espero que esto ayude.

  38. 0

    También he tenido este problema. Resulta que era cuando he eliminado la Aplicación Delegado de la lista de Objetos a la izquierda he borrado la conexión para la Aplicación de Delegado, Ventana y TabBarController 🙂

  39. 0

    Han intentado establecer el delegado, es decir,

    self.rootController.delegate = self;

    dentro de applicationDidFinishLaunchingWithoptions? Que trabajó para mí, aunque no estoy seguro de por qué.

  40. 0

    para ARCO cambio:

    cambio

    @synthesize window;

    lugar de

    @synthesize window=_window;
  41. 0

    Tuve el mismo mensaje de error porque me llamó una alerta en

    - (void)applicationDidBecomeActive:(UIApplication *)application 

    lugar de

    - (void)applicationWillEnterForeground:(UIApplication *)application
  42. 0

    Me fue la migración de un viejo EAGLView proyecto de ejemplo para la nueva GLKView ejemplo de proyecto en Xcode 4 y ninguna de las soluciones que funcionó para mí. Finalmente me di cuenta de que yo estaba tratando de establecer las principales GLKViewController mismo.vista para apuntar a un anidada GLKView en el Interface Builder.

    Cuando me señaló con el auto.ver de vuelta a la raíz GLKView en el Interface Builder, mi aplicación fue entonces capaz de lanzar sin un mensaje de error (para asegurarse de que su controlador de vista la visión de conjunto a la raíz de la vista).

    P. S. si usted desea conseguir un anidada GLKView de trabajo, crear una nueva variable de miembro como yo.glkSubview en ViewController.h y arrastre su conexión a la anidados GLKView en el Interface Builder. A continuación, asegúrese de arrastre auto.glkSubview del delegado del Propietario del Archivo. Manualmente, debe llamar a [auto.glkSubview pantalla] en «- (void)glkView:(GLKView *)ver drawInRect:(CGRect)rect» si usted tiene setNeedsDisplay desactivado para la GLKView.

  43. 0

    Ninguna de las anteriores trabajó para mí… que se encuentra fuera algo malo con mi método init en mi appDelegate. Si va a implementar el método init asegúrese de hacerlo correctamente

    he tenido este:

    - (id)init {
        if (!self) {
            self = [super init];
            sharedInstance = self;
        }
        return sharedInstance;
    }

    y cambió a este:

    - (id)init {
        if (!self) {
            self = [super init];
        }
        sharedInstance = self;
        return sharedInstance;
    }

    donde «sharedInstance» su un puntero a mi appDelegate singleton

  44. 0

    Ninguno de la respuesta, bastante solucionado mi problema.

    Estoy trabajando en un viejo iOS4 proyecto actualizado para el ARCO y ahora se está trabajando en Xcode 5 para iOS 7

    He leído a través de todos ellos y comenzó a controlar mi config y el código.

    Lo que fija, para mí, fue la adición de

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

    Además de tener

    - (void)applicationDidFinishLaunching:(UIApplication *)application
    {
    }

    No me han

    -(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions

    antes de obtener el error.

  45. 0

    Si tu aplicación reemplaza el principal UIWindow con FingerTipWindow (para mostrar toques en un proyector) y no has actualizado tus fuentes para algunos (varios) años, su objeto de reemplazo podría no incluir un rootViewController propiedad (ver kgn del 5/21/2013 mod en GitHub)

    Puede establecer window.rootViewController en didFinishLaunchingWithOptions hasta que las vacas vienen casa, pero la ventana no de un informe «en la final de lanzamiento de aplicaciones» y se lanzará una excepción en tiempo de ejecución. Actualización de las fuentes.

  46. 0

    En mi caso, todo sobre el real de la ventana y el didFinishLaunchingWithOptions: método fue bien.

    Mi error fue que no me di cuenta de applicationDidBecomeActive: se ejecuta en el arranque, además cuando la aplicación está llegando a primer plano después de haber estado en el fondo.

    Por lo tanto, en applicationDidBecomeActive: me estaba manipulando la vista de los controladores que no había terminado toda su instalación aún (de espera para los diferentes subprocesos para responder, etc).

    Una vez que me mudé a esta funcionalidad fuera de applicationDidBecomeActive, los errores se fue.

  47. 0

    Movimiento setRootViewController: de didFinishLaunchingWithOptions: a awakeFromNib: resuelto este en mi proyecto vacío.

    • awakeFromNib de qué exactamente? :/
  48. 0

    Esta Swift 2 solución que funcionó para mí :

    Inserte el código siguiente en el AppDelegate -> didFinishLaunchingWithOptions

    self.window!.rootViewController = storyboard.instantiateViewControllerWithIdentifier("YourRootViewController") as? YourRootViewControllerClass
  49. -7

    Validar el archivo de GUIÓN gráfico… Si usted está usando IB ‘wire’ código para la interfaz de usuario.. y acaba de pasar a eliminar el elemento de interfaz de usuario … y, a continuación, darse cuenta de, oh, usted necesita para eliminar la referencia en el código (en mi caso un UIButton llamado AbortButton)… entonces los momentos más tarde, la aplicación no va a lanzar…

    El problema está en el ‘storyboard’ archivo. Ábralo en un editor de xml y buscar huérfanos ‘relaciones’, de conectores que punto los lugares donde no deberían…

    por ejemplo:

    <relaciones>
    <relación de tipo=»salida» name=»AbortButton» candidateClass=»UIButton»/>

    NO existen en mi código ya… (pero yo todavía tenía un ‘conector’ vinculado en el archivo de guión gráfico)..

    También tuve (de alguna manera y no válidos del conector de un UIImageView o una Barra de herramientas a mi principal UIViewController.objeto de la vista)… no creo que le gustaba que sea…

    línea de fondo – uno no tiene manualmente el código de la controladora en la existencia… el archivo de GUIÓN gráfico es golpeado. Me fijo que la mía, y bingo funcionaba perfecto de nuevo..

    y por CIERTO, como un texto coder.. estoy creciendo muy aficionado a la de IB… patadas culo de MS Visual Studio IDE…

Dejar respuesta

Please enter your comment!
Please enter your name here