2010-07-09 5 views
4

J'ai rencontré une sorte de roadblock avec mon application iPad. J'ai apparemment fait quelques changements irrécupérables à mon code récemment et maintenant il ne lancera qu'avec un écran noir. Il affiche l'image de chargement pendant une fraction de seconde et va directement au noir.Écran noir vide lors de l'exécution de mon application iPad

Dans le but de rationaliser le type de problème que je cherche, j'aimerais savoir où je devrais commencer à chercher. J'ai fait de mon mieux jusqu'ici pour vérifier et revérifier tout ce que je peux déjà penser, donc je suis prêt à commencer la recherche avec quelques conseils. Plus précisément, quelles sont les raisons les plus courantes pour lesquelles votre code aboutira à un écran noir, sans aucun code du tout. Serait-ce un problème InterfaceBuilder, un problème Xcode .h, un problème .m avec mes méthodes ou quoi? J'ai en quelque sorte accidentellement résolu le problème plusieurs fois par le passé, mais j'ai du mal à trouver la source cette fois-ci. J'ai ajouté des appels NSLog à travers mon code pour aider à affiner le problème (dans chaque fichier .m en fait) et aucun d'eux n'imprime dans le journal du tout.

faits:

  • J'utilise la dernière Xcode et le SDK iOS (pour iPad, 3.2).
  • Il le fait à la fois dans le simulateur et mon iPad réel.
  • Mon iPad n'est pas, et n'a jamais été été jailbreaké.
  • Mon application est réellement très simple, c'est juste une vue partagée avec une vue détaillée et une vue racine personnalisée qui a une table redimensionnée.

Toute aide que quelqu'un peut fournir me ferait vraiment gagner beaucoup de gémissements, de mopétisme et de pleurs. heh

Merci.

complémentaires Code demandé:
viewDidLoad de MasterView.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSLog(@"Master: This self: %@", self); 

    self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0); 
    self.arrMenuOptions = [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"MainMenuOptions" ofType:@"plist"]] retain]; 
} 

viewDidLoad de DetailView.m

- (void)viewDidLoad { 
    /// Initialize the preset things. 
    NSLog(@"Detail: This self: %@", self); 
    eleDetailToolbar.barStyle = UIBarStyleBlack; 

    eleWebView.opaque = NO; 
    eleWebView.backgroundColor = [UIColor clearColor]; 
    eleWebView.delegate = self; 
    [super viewDidLoad]; 
} 

extrait AppDelegate

@implementation AssistantAppDelegate 

@synthesize window, splitViewController;//, detailViewController, masterViewController; 
//rootViewController, eleMasterNavigationItem 

#pragma mark - 
#pragma mark Application lifecycle 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    NSLog(@"AppDelegate: This self: %@", self); 

    // Override point for customization after app launch  

    // Add the split view controller's view to the window and display. 
    [window addSubview:splitViewController.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 
+0

Avait le même problème sur l'iPad 3, mais la couleur de l'écran était gris. La seule chose que j'ai trouvé - redémarrer l'appareil pour un bon travail – fnc12

Répondre

6
  1. Vous obtenez des messages d'erreur sur la console Run?
  2. Avez-vous une vue connectée dans un constructeur d'interface? Ou essayer de charger un fichier XIB inexistant?
  3. Avez-vous la clé main nib file base name remplie dans le fichier info.plist? Qu'est-ce que dans vos méthodes applicationDidFinishLaunching et viewDidLoad?
  4. Avez-vous supprimé des références à quelque chose dans Interface Builder?
  5. Avez-vous ajouté récemment de nouvelles ressources qui pourraient être corrompues?

S'il vous plaît mettre à jour votre question, si possible avec le code

mise à jour en fonction des commentaires: Comment gagnez-vous d'une fenêtre si vous ne disposez pas d'une méthode applicationDidFinishLaunching?

Vous devriez avoir quelque chose comme ça dans le dossier délégué App:

@synthesize window; 
@synthesize viewController; 

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

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

} 

Si ce n'est pas ici, pas de fenêtre est ajouté, et vous obtenez un écran noir.

+0

plus de questions: Avez-vous ajouté la vue que vous souhaitez afficher à la fenêtre? Avez-vous rendu la fenêtre visible? La méthode applicationDidFinishLaunchingWithOptions est implémentée? –

+1

+1 Le problème est presque certainement que vous ne chargez pas la fenêtre dans 'applicationDidFinishLaunching:' Cela produit une fenêtre noire vide sans autre problème apparent car l'application pense que c'est ce que vous voulez. Une fenêtre blanche vide signifie que vous n'avez pas chargé une vue dans la fenêtre. – TechZen

+0

Merci de répondre IWasRobbed, et mes excuses pour mon long délai de réponse. Voici ce que je sais de mieux: # 1. Pas de messages d'erreur, pas de messages sur la console, pas d'avertissement, pas d'erreurs de compilation, rien de rien, même lorsque j'ajoute du code à vider sur la console, ça ne s'exécute jamais. # 2. Oui, toutes mes vues sont liées dans Interface Builder. La principale (MainWindow.xib), la vue racine (MasterView.xib) et la vue détaillée (DetailView.xib) # 3. Oui. # 4.1 viewDidLoad est ci-dessous. Je n'ai pas une applicationDidFinishLaunching, et je ne crois pas qu'elle l'ait jamais fait. :( // Suite au commentaire suivant – Brak

1

J'ai eu le même problème. TechZen avait raison de dire que c'est parce que la fenêtre principale de la plume n'est pas chargée. Donc, la troisième suggestion d'iWasRobbed a donné le meilleur indice. Le problème était que, mon application a été faite pour iPhone et iPad, donc dans le Info.plist, j'avais NSMainNibFile~iphone et NSMainNibFile~ipad, qui ne sont pas reconnus avant ISO 3.2. Ce que je devais faire est d'ajouter une entrée de plus pour le but de la compatibilité: NSMainNibFile.

Merci pour les indices, tout le monde! Codage heureux!

Questions connexes