2013-04-18 9 views
9

Durante l'invio di un app per l'App Store che ho ricevuto un messaggio che indica:valido info.plist - UIMainStoryboardFile o NSMainNibFile durante l'invio di un app per app store

"Invalid info.plist: the info.plist may contain either UIMainStoryboardFile or NSMainNibFile, but must not contain both keys" 

Dopo googling intorno sembra che il consenso è per impostare il "nome base file pennino principale" su "MainWindow" e anche per impostare il "nome base file storyboard principale" su "MainStoryboard_iPAd". Entrambe le opzioni che abbiamo già.

L'app è progettata per funzionare sia su iPad che su iPhone e l'app contiene due file storyboard, uno per ipad e uno per iphone. Non riesco a trovare alcun .nib o .xib visibile da manipolare anche se trovo la risposta corretta.

Qualcuno ha qualche suggerimento su come aggirare/risolvere questo problema così l'app invierà?

Grazie mille!

risposta

6

Come suggerisce il messaggio, non è necessario impostare sia UIMainStorboardFile che NSMainNibFile nel file Info.plist. Vorrei suggerire di rimuovere la voce NSMainNibFile.

Dal momento che si dispone di due storyboard, una per iPad e una per iPhone, è possibile impostare come principale Storyboard separatamente nel scheda Sintesi del progetto:

enter image description here

8

Purtroppo , la risposta di @ verbumdei non ha funzionato per me.

Stavo cercando di trasformare un progetto solo per iPhone in Universal in iOS 7 e non funzionava. Lo storyboard dell'iPad non veniva letto.

Quello che è successo è che Xcode ha aggiunto una chiave al mio .plist che era "Nome file base del pennino principale (iPad)". Ho dovuto cancellare quella chiave e aggiungere "Nome base file storyboard principale (iPad)", quindi impostare il nome del file nello storyboard (cioè Storyboard-iPad.storyboard).

+1

Ho anche dovuto creare una copia del primo storyboard come MainStoryboard-iPad.storyboard. – WebOrCode

+0

Nel mio caso, ho creato un nuovo Storyboard ma sì, copiare lo storyboard del tuo iPhone può anche essere una risposta sensata. Grazie! – OlivaresF

+0

Grazie @OlivaresF, questa risposta mi ha salvato. Avevo cambiato un'app per iPhone in un'app universale, ma stavo usando lo stesso storyboard. – drc

3

check info ->custom IOS target properties

Controllare Main nib file base name(iPhone/iPad) o Main Storyboard file base name(iPhone/iPad)

Se non esiste, aggiungerli e scrivere il nome del file di base.

Funziona per me.

0

Nessuna delle soluzioni di cui sopra ha funzionato per me.
Perciò quello che ho fatto è che ho aggiunto una proprietà storyboard al AppDelegate e impostarne il valore a - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Di seguito è riportato il codice per questo:
AppDelegate.h

@property (strong, nonatomic) UIStoryboard* storyboard; 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { // is iPad 
     self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_ipad" bundle:Nil]; 
    } else { 
     self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iphone" bundle:Nil]; 
    } 

    self.window.rootViewController = [self.storyboard instantiateInitialViewController]; 

    [self.window makeKeyAndVisible]; 

    return YES; 
} 
0

Per impostazione predefinita, Xcode crea il "Nome base del file del pennino principale (iPad)" nel file info.plist e assegna il nome allo storyboard del tuo iPad.

Ecco la risoluzione Informazioni aperte.plist file-> cancella 'Main nib file base name (iPad)' e aggiungi un'altra chiave con nome 'Main storyboard file base name (iPad)' e assegnagli il nome del tuo storyboard per iPad, ad esempio Main_iPad non fornisce l'estensione.