AppDelegate UIWindow addSubView dans différents viewController

Je suis en train d'ajouter un UILabel dans UIWindow de AppDelegate à partir d'un UIViewController. C'est de cette façon que je le fais:

AppDelegate code :

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

ViewController code :

- (void)viewDidLoad
{

    UILabel *abcd=[[UILabel alloc] initWithFrame:CGRectMake(100.0, 100.0, 200.0, 40.0)];

    abcd.text=@"loading...";

    abcd.backgroundColor=[UIColor clearColor];

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

    [super viewDidLoad];


}  

Mais tout ce que je vois c'est écran gris mais pas de label. Où je peut mal se passer?

Juste une petite astuce, vous n'avez pas à vérifier si l'application est en cours d'exécution sur un iPad à la charge spécifique de l'iPad ou de l'iPhone de vue. Ajoutez simplement le ~ipad pour le nom de la vue. Ainsi, l'iphone afficher le nom de fichier sera: ViewController.xib et la version iPad sera: ViewController~ipad.xib. Maintenant, vous pouvez simplement charger la vue avec: [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] et iOS va charger le bon.
Oh...Merci pour l'astuce. 🙂 Maintenant, la réponse s'il vous plaît. 🙂

OriginalL'auteur Nitish | 2012-08-29