AppDelegate UIWindow addSubView en diferentes viewController

Estoy intentando agregar una UILabel en UIWindow de AppDelegate desde un UIViewController. Así es como estoy haciendo esto:

Código AppDelegate :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; } else { self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; } [self.window makeKeyAndVisible]; self.window.rootViewController = self.viewController; return YES; } 

Código ViewController :

 - (void)viewDidLoad { UILabel *abcd=[[UILabel alloc] initWithFrame:CGRectMake(100.0, 100.0, 200.0, 40.0)]; abcd.text=@"loading..."; abcd.backgroundColor=[UIColor clearColor]; [[[[UIApplication shanetworkingApplication] delegate] window] addSubview:abcd]; [super viewDidLoad]; } 

Pero todo lo que estoy viendo es pantalla gris pero sin label. ¿Dónde podría estar yendo mal?

1) Sugiero que invierta el order de sus últimas dos declaraciones de delegado:

 self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; 

2) Aunque debería poder agregar la label a la window, es algo poco ortodoxo para hacerlo. En cualquier caso, intente agregar la label a la vista viewController y ver si funciona, y si es así, y realmente desea agregarlo a la window (por alguna razón), a continuación, agregue un comentario aquí:

 [self.view addSubview:abcd]; 

Si todavía no puede ver la label, es probable que exista un problema con el controller de vista. ¿Definiste algo en la punta: cualquier elemento que debería estar visible en el lanzamiento? Si no, añada algo solo para que pueda estar seguro de que la vista se está cargando. [Un truco que utilizo es establecer el color de background de las vistas en rojo o azul, por lo que puedo ver que de hecho se cargaron.]

No debe agregar UILabel a UIWindow, debe agregar a UIViewController. Cambia esta línea:

 [[[[UIApplication shanetworkingApplication] delegate] window] addSubview:abcd]; 

para esto:

 [self.view addSubview:abcd]; 

revertir la order a

 self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; 

Entonces

intente agregar a la vista primero no a la window usando el siguiente código

 [self.view addSubview:abcd]; 

Si esto no muestra su label, entonces el controller de vista no se está cargando.

Si es así, revise la propiedad de su file xib.

elimine la línea de asignación de window y compruebe la connection de su window en el file mainwindow.xib si el package no es correcto, entonces no se cargará la vista.

Tal vez la vista del controller de vista cubra la que agregó. Agregue la nueva vista a la vista del controller de vista:

 [self.view addSubview:abcd]; 

Intente esto después de agregar UILabel en UIWindow

  [[[[UIApplication shanetworkingApplication] delegate] window] makeKeyAndVisible];