una segundo plano para gratis crear como app aplicaciones actualizacion actividad ios objective-c

ios - segundo - Se espera que las aplicaciones tengan un controlador de vista de raíz al final del lanzamiento de la aplicación.



crear app ios (30)

Me sale el siguiente error en mi consola:

Se espera que las aplicaciones tengan un controlador de vista de raíz al final del lanzamiento de la aplicación.

A continuación se muestra mi application:didFinishLaunchWithOptions método application:didFinishLaunchWithOptions :

- (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 Interface Builder, el UITabBarController del UITabBarController está conectado al delegado de la aplicación.

Alguien sabe cómo solucionar este problema?


Actualicé a iOS9 y comencé a obtener este error de la nada. Pude arreglarlo pero agregando 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; } }


Además de la respuesta "sho", correcta (el cuarto parámetro de UIApplicationMain debería ser el nombre del controlador principal), agrego algunos comentarios.

Recientemente cambié el ''modelo'' de una aplicación mía de usar MainWindow.xib para construir una ventana programáticamente. La aplicación usó una plantilla anterior que creó ese MainWindow automáticamente. Como quería admitir una vista de controlador diferente XIB para iPhone 5, es más fácil elegir el XIB correcto programáticamente cuando se crea el delegado de la aplicación. También eliminé MainWindow.xib del proyecto.

El problema fue que olvidé llenar el cuarto parámetro en la aplicación principal de UIA y OLVIDÉ DE QUITAR MainWindow de "Interfaz principal" en el Resumen del proyecto.

Esto causó un GRAN problema: emitió la advertencia inofensiva "Se espera que las aplicaciones ..." en los dispositivos de desarrollo, pero cuando fue a la App Store, se rompió en los teléfonos de los consumidores y se bloqueó porque 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 un bloque blanco, como una UIView en blanco, aparecía a veces cuando se cambiaban las Configuraciones y la aplicación se ponía en primer plano. En el iPhone 5 quedó claro que se trataba de un bloque de 320x480. Quizás la MainWindow faltante se estaba creando en modo de desarrollo, utilizando el tamaño anterior. Acababa de encontrar este error cuando los primeros informes del accidente llegaron a la bandeja de entrada.

La instalación de la aplicación desde App Store en lugar de XCode mostró que la aplicación se bloqueó, y el problema de MainWindow se reveló en el registro, por lo que pude ver que no era una combinación especial de dispositivos + versiones de IOS.


Asegúrese de tener esta función en el delegado de su aplicación.

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

Asegúrate de que didFinishLaunchingWithOptions devuelve YES. Si se eliminó la línea ''devolver SÍ'', esto causará el error. Este error puede ser especialmente común con los usuarios del guión gráfico.


Comencé a tener este mismo problema justo después de actualizar a Xcode 4.3, y solo al iniciar un proyecto desde cero (es decir, crear un proyecto vacío, luego crear un UIViewController y luego crear un archivo nib separado).

Después de colocar TODAS las líneas que solía, y asegurarme de que tenía las conexiones correctas, seguí recibiendo el error y el archivo de punta que estaba tratando de cargar a través del controlador de vista (que se estableció como el controlador de raíz) nunca se mostró en el simulador.

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

Xcode 4.3 parece agregar por defecto el método - (void) loadView; a la sección de implementación del controlador de vista. Después de leer cuidadosamente los comentarios en su interior, quedó claro cuál era el problema. El comentario indicado para anular el método loadView si está creando una vista mediante programación (y estoy parafraseando), de lo contrario NO anulará loadView si se usa una punta. No había nada más dentro de este método, por lo que, en efecto, estaba anulando el método (y sin hacer nada) MIENTRAS usaba un archivo de plumilla, lo que daba el error.

La SOLUCIÓN fue eliminar completamente el método loadView de la sección de implementación, o llamar al método principal agregando [super loadView].

Sería mejor eliminarlo si usar un archivo NIB como agregar cualquier otro código en efecto lo anulará.


Con mi primera vista siendo MenuViewController agregué:

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

en el método de delegado de aplicación:

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

Eso funciono.


Este problema ocurre cuando no tienes configurado correctamente Interface Builder.

Asegúrese de que la ventana de su Delegado de la aplicación y las salidas de viewController estén conectadas:

En su MainWindow.xib, mantenga el control, haga clic en Delegado de la aplicación y arrástrelo al objeto de la Ventana. Seleccione la ventana. Mantenga el control y seleccione el delegado de la aplicación nuevamente, arrastre a su controlador de vista raíz y seleccione viewController.


Esto me paso a mi Resuelto editando el archivo .plist. Especifique el nombre de la base del archivo nib principal. (Debe ser MainWindow.xib). Espero que esto ayude.


Esto ocurrió para mí porque comenté inadvertidamente:

[self.window makeKeyAndVisible];

desde

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


Hubo un ligero cambio en iOS 5.0 o algo así, que requiere que tengas un controlador de vista de raíz. Si su código se basa en un código de muestra anterior, como GLES2Sample , entonces no se creó un controlador de vista raíz en esas muestras de código.

Para corregir (que GLES2Sample, por ejemplo), directamente en applicationDidFinishLaunching , creo un controlador de vista de raíz y le adjunto mi glView.

- (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 }

Eso hace que la advertencia desaparezca, y en realidad no afecta su aplicación de otra manera.


Intente conectar IBOutlet del controlador de la barra de pestañas a la vista raíz en el Interface Builder en lugar de

self.window.rootViewController = self.tabBarController;

Pero en realidad no he visto tal error antes.


Me encontré con el mismo problema pero estaba usando storyboard

Asignando el storyboard InitialViewController al InitialViewController de mi ventana.

En

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

Y esto resolvió el problema.


Me encontré con el mismo problema recientemente, al crear un proyecto con ios5 sdk. Al principio estaba construyendo y funcionando correctamente, pero después de eso apareció el error.
En mi caso la solución fue bastante simple.
Lo que faltaba era que, de alguna manera, la propiedad de la interfaz principal en la pestaña de resumen de mi objetivo de aplicación se borró. Así que tuve que configurarlo de nuevo.


Si este no es el punto, y si tabBarController sigue siendo nulo, siempre puede crear su ventana y su controlador raíz mediante programación. Como alternativa, agregué el siguiente código a 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 funcionará solo si también se implementa la solución de sho.


Ninguna de las sugerencias anteriores resolvió mi problema. El mío fue este:

Añadir:

window.rootViewController = navigationController;

después:

[window addSubview:navigationController.view];

en mi appdelegate''s

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


Obtuve esto al comenzar con la plantilla "Vaciar aplicación" y luego agregar manualmente un XIB. Lo resolví estableciendo el nombre principal de Nib como lo sugirió Sunny. El paso que falta en este escenario es eliminar

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

desde

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

Como sobrescribirá la instancia de su ventana creada en el archivo Xib. Esto es asumiendo que ha creado un ViewController y lo ha conectado con su ventana y el Delegado de la aplicación en el archivo XIB también.


OrdoDei dio una respuesta correcta y valiosa. Estoy agregando esta respuesta solo para dar un ejemplo de un método didFinishLaunchingWithOptions que usa su respuesta, así como también los comentarios de los demás con respecto al controlador de navegación.

- (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; }


Para agregar a la respuesta de Mike Flynn, desde que actualicé a Xcode 7 y ejecuté mi aplicación en un dispositivo con iOS 9, agregué 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; } }


Pude establecer el controlador de vista inicial en la pantalla de resumen de xcode.

Haga clic en la parte superior del nombre del proyecto en el explorador de archivos de la izquierda (debería tener un pequeño icono de plano). En la columna central, haga clic en el nombre de su proyecto en "OBJETIVOS", (debería tener un pequeño icono con el lápiz ''A'' al lado). Busque en ''Información de implementación del iPhone / iPod'' y busque ''Interfaz principal''. Debería poder seleccionar una opción del menú desplegable.


Recibí el mismo error después de reemplazar mi interfaz de usuario con un Storyboard, utilizando XCode 4.6.3 y iOS 6.1

Se solucionó borrando todo el código de didFinishLaucnhingWithOptions en el AppDelegate

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


Reemplazar en AppDelegate

[window addSubview:[someController view]];

a

[self.window setRootViewController:someController];


Resolví el problema haciendo lo siguiente (ninguna de las soluciones anteriores ayudó):

Desde el menú desplegable asociado con "Interfaz principal", seleccione otra entrada y luego vuelva a seleccionar "Ventana principal" y luego reconstruya.


Si usa MTStatusBarOverlay, obtendrá este error.

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

Esto no parece causar un problema.


También tuve este error, pero a diferencia de cualquiera de las respuestas anteriores, la mía se debía a que no había comentado el método ''loadView'' en mi controlador recién generado (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 era para crear la vista programáticamente, pero me la perdí porque se parecía mucho a otros métodos como viewDidLoad que normalmente uso, no lo detecté.

Para resolverlo, simplemente elimine ese método si no está creando mediante programación la jerarquía de vistas, también con el uso de plumillas o guiones gráficos.


Tengo estos problemas también. Tengo mi proyecto ejecutado en xcode4.2.1. He leído todos los comentarios, pero nadie es bueno para mí. Después de un tiempo, me parece que he comentado un trozo de código.

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

Entonces lo descomenté. todo esta bien para mi Espero que esto sea útil para ustedes.


Tuve el mismo error al intentar cambiar el primer controlador de vista que se cargó en

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

Al principio no sabía realmente de dónde venía el error precisamente, así que lo reduje y descubrí qué fue lo que salió mal. Resulta que intentaba cambiar la visualización de una vista antes de que apareciera en la pantalla. Por lo tanto, la solución fue mover este código en el controlador de vista que me estaba causando problemas.

- (void)viewDidLoad

a

- (void)viewDidAppear:(BOOL)animated

y el error dejó de aparecer. Mi problema específicamente fue causado por hacer un show UIAlertView .

En su caso, le sugiero que revise el código en el controlador de vista activo de tabBarController (ya que probablemente sea un problema en ese controlador de vista). Si eso no funciona, intente establecer la configuración de inicio en el archivo de la punta en lugar del código, o si desea hacerlo en el código, intente mover el código al método apropiado del controlador de vista activo del tabBarController.

¡Buena suerte!


Tuve este mismo mensaje de error en el registro. Tuve un UIAlertView emergente en la aplicación: didFinishLaunchingWithOptions. Lo resolví retrasando la llamada a alertView para permitir que el controlador de vista raíz terminara de cargarse.

En aplicación: didFinishLaunchingWithOptions:

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

que llama después de 1 segundo:

- (void)callPopUp { // call UIAlertView }


Yo tuve el mísmo problema. Revisa tu main.m. El último argumento debe establecerse con el nombre de la clase que implementa el protocolo UIApplicationDelegate.

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


Yo tuve el mismo problema. Si está creando una aplicación basada en ventanas "desde cero" como lo estaba haciendo, deberá hacer lo siguiente: (tenga en cuenta que estos son los pasos para Xcode 4.2).

0. Asegúrese de que el delegado de su aplicación cumpla con el protocolo UIApplicationDelegate.

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 el delegado de la aplicación en main.m

Por ejemplo,

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

2. Crea un archivo de interfaz de la ventana principal.

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

Después de agregar el archivo a su proyecto, vaya al resumen del proyecto (haga clic con el botón izquierdo en el proyecto; haga clic en el resumen). En Información de implementación del iPhone / iPod (y la sección correspondiente del iPad si lo desea) y seleccione su nuevo archivo de interfaz en el " Interfaz principal "cuadro combinado.

3. Conectalo todo en el editor de interfaz.

Seleccione su archivo de interfaz en la lista de archivos para abrir el editor de interfaz.

Asegúrese de que el panel Utilidades esté abierto.

Agregue un nuevo Objeto arrastrando un Objeto desde la lista de Objetos en el panel de Utilidades al espacio arriba de debajo de su objeto de Ventana. Seleccione el objeto. Haga clic en el inspector de identidad en el panel Utilidades. Cambie la clase al delegado de la aplicación (MyAppDelegate, en este ejemplo).

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

Haga clic en el propietario del archivo a la izquierda y luego haga clic en el inspector de identidad en el panel Utilidades. Cambie la clase a UIApplication

Muestra el inspector de conexiones para el propietario del archivo. Conecte la salida de delegado al objeto MyAppDelegate.

4. Por último, y muy importante, haga clic en el objeto Ventana en el archivo de interfaz. Abra el inspector de atributos. Asegúrate de que "Visible at Launch" esté marcado.

Eso es todo lo que tenía que hacer para que funcionara para mí. ¡Buena suerte!


Cómo agregar un RootViewController para iOS5

si su aplicación no usó un RootViewController hasta ahora, simplemente cree uno;) presionando Archivo> Nuevo> Nuevo archivo; seleccione la UIViewController subclass nombre RootViewController , desmarque la opción Con XIB para la interfaz de usuario (suponiendo que ya tiene una) y coloque este código en su AppDelegate :: didFinishLaunchingWithOptions

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

seguro - tienes que importar RootViewController.h y crear la variable

Aquí hay un buen artículo sobre el RootViewController y el AppDelegate,


Este error también aparece cuando el propietario del archivo de MainWindow.xib está configurado incorrectamente.

El propietario del archivo es UIApplication
-> objeto insertado de la clase de delegado de aplicación con salida de ventana conectada a ventana


  • Seleccione su "Ventana" en su archivo Nib
  • En "Inspector de atributos" Marque "Visible en el lanzamiento"
  • Esto sucede cuando su archivo de plumilla se crea manualmente.
  • Esta solución funciona para el modo de plumilla normal, no para el guión gráfico