2012-10-08 1 views
8

Ho questo problema, tuttavia nessuna delle informazioni che riesco a trovare su questo forum o su Internet in generale sembra essere in grado di aiutarmi.Le finestre delle applicazioni dovrebbero avere un controller di visualizzazione root al termine dell'avvio dell'applicazione - anche se sono stati risolti tutti i problemi noti

Sembra che ci siano due luoghi in cui questo errore può accadere:

  1. main.m - la mia funzione è simile al seguente:
int main(int argc, char *argv[]) 
    { 
     @autoreleasepool { 
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
     } 
    } 

L'ultimo argomento in UIApplicationMain restituisce un valore di NSString la classe del mio AppDelegate. Questo funziona quindi bene.

2.AppDelegate.m - c'è un modo "vecchio" di impostare la vista del regolatore radice che è come questo:

[self.window addSubview:rootViewController]; 

Tuttavia, nella mia app è già stato aggiornato per:

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

Quindi nessuna delle informazioni correnti su Internet funziona. È un po 'più sconcertante come il mio collega possa farlo funzionare perfettamente sul suo computer - è stato lui a mandarmi il codice sorgente dell'app in modo che tutte le impostazioni e il codice dovessero essere esattamente gli stessi.

Sto provando a lanciare questo nel simulatore. È costruito contro iOS 5, ma sto cercando di eseguirlo sul simulatore di iOS 6.0.

Ho l'ultimo XCode (4.5.1).

C'è qualche motivo per cui ciò potrebbe accadere? E come posso correggerlo?

Molte grazie

Tom

+0

Dupes: http://stackoverflow.com/q/7520971/9530 http://stackoverflow.com/q/8706828/9530 http://stackoverflow.com/q/8190567/9530 http://stackoverflow.com/q/11515818/9530 http://stackoverflow.com/q/9844626/9530 e forse più –

risposta

17

Mi sono imbattuto esattamente nella stessa cosa cercando di aggiungere un UITableView a un'app vista singola. Invece, creare un progetto di applicazione Master-Detail predefinito (File-> Nuovo-> target -> ...) e vedere l'implementazione del AppDelegate di didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 

MDMasterViewController *masterViewController = [[MDMasterViewController alloc] initWithNibName:@"MDMasterViewController" bundle:nil]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController]; 
self.window.rootViewController = self.navigationController; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

Invece di impostare direttamente la visualizzazione controller come RootViewController della finestra , è necessario creare un controller di navigazione inizializzato con il controller di visualizzazione per initWithRootViewController, quindi impostare il controller di navigazione come rootViewController della finestra. (Nota che devi anche scoiattolo via il controller di navigazione in una proprietà in modo che non venga distrutto).

0

Procedere come segue aggiungere un punto di interruzione di eccezione sul vostro codice, almeno per vedere se si può capire qual è il problema. Utilizzare il tutorial this se non si sa come farlo. Inoltre, ci sono avvertenze quando si compila? Anche se ti consente di compilare, a volte gli avvisi possono rivelare il motivo per cui la tua app si arresta in modo anomalo.

+0

Questa non è davvero una risposta. Non riesco a impostare i punti di interruzione perché l'errore si verifica non appena 'application: didFinishLaunchingWithOptions' restituisce' YES/NO', quindi non c'è un luogo specifico in cui l'app si arresta in modo anomalo. Neanche un crash, non posso fare il backtrace in GDB. L'app sembra essere in esecuzione, ma nel simulatore non appare nulla sullo schermo. –

+0

Ho appena lanciato i miei 2 centesimi. Scusa se non potevo aiutarti. – Peres

+0

Grazie per l'input. :) –

3

cercare di definire il controller visualizzazione predefinita nel menu del progetto,

selezionare il progetto => Sintesi => Interfaccia principale => Inserisci il tuo controller della vista principale

ogni volta che ho iniziato nuovo progetto ho affrontato lo stesso errore di te, risolvendolo ogni volta, spero che questo ti aiuti.

+1

Ora è Progetto> Generale> Informazioni di distribuzione> Interfaccia principale –

6

Basta cambiare questo:

[window addSubview:tabBarController.view]; 

a questo:

[window setRootViewController:tabBarController]; 

O tutto ciò che era nella addSubView:

+0

Questa era la soluzione per me. –

+0

deve essere contrassegnato come risposta corretta – Sandeep