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
Oh...Merci pour l'astuce. 🙂 Maintenant, la réponse s'il vous plaît. 🙂
~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
Vous devez vous connecter pour publier un commentaire.
1) je vous suggère d'inverser l'ordre de vos deux derniers délégué des états:
2) Alors que vous devriez être en mesure d'ajouter l'étiquette de la fenêtre, son peu orthodoxe de le faire. Dans tous les cas, essayez d'ajouter l'étiquette de la viewController de vue et voir si cela fonctionne, et si oui, et que vous voulez vraiment ajouter à la fenêtre (pour certaines raisons), puis ajoutez un commentaire ici:
Si vous ne pouvez pas encore voir le libellé de son probable qu'il y ait un problème avec l'affichage du contrôleur. Avez-vous définir quoi que ce soit dans la plume - tout élément qui doit être visible au lancement ? Si non, alors ajouter quelque chose, de sorte que vous pouvez être sûr que le point de vue est en fait chargé. [Une astuce que j'utilise est de définir la couleur d'arrière-plan de la vue sur le rouge ou le bleu, donc je peux voir qu'en fait, ils sont arrivés chargé.]
OriginalL'auteur David H
Vous ne devez pas ajouter UILabel à UIWindow, vous devez l'ajouter à UIViewController. Modifier cette ligne:
pour cela:
OriginalL'auteur alfonsomiranda
revers de la commande à
Puis
essayez d'ajouter à la vue d'abord de ne pas la fenêtre à l'aide du code suivant
Si ce n'est pas de montrer votre étiquette le point de vue du contrôleur n'est pas chargé.
Si oui, alors vérifiez la propriété de votre fichier xib.
enlever la fenêtre alloc ligne et de vérifier le crochet en haut de votre fenêtre mainwindow.xib fichier si le hoockup n'est pas correcte, alors il ne charge pas la vue.
OriginalL'auteur Rohit
Peut-être votre point de vue du contrôleur de la vue couvre celui que vous avez ajouté. Ajouter le nouveau point de vue à la vue du contrôleur de la vue à la place:
OriginalL'auteur nevan king
Essayer après l'ajout de UILabel dans UIWindow
OriginalL'auteur Paresh Navadiya