2012-10-31 12 views
6

Ho fatto un'app per iPhone molto tempo fa e ora sto pensando di renderlo un'app universale, ma mi chiedevo se potevo usare Storyboard per creare la versione per iPad, quindi per l'iPhone si caricava un MainWindow.xib e per l'iPad avrebbe caricato un file MainStoryboard. È possibile?Puoi realizzare un'app universale utilizzando sia MainWindow.xib per iPhone che Storyboard per iPad?

+1

Penso che, a meno che l'app non sia molto complessa, staresti meglio realizzando tutto lo storyboard. In questo modo tutte le transizioni sarebbero uguali e il tuo codice sarebbe molto più pulito. – nycynik

+0

Questa è la cosa, l'app è piuttosto complessa, e non penso che rifarei tutto da capo per l'iPad se gli Storyboard non fossero disponibili, ma prima che mi precipiti in qualcosa ho bisogno di sapere se sono in grado di Fai quello. – user1790012

risposta

3

Sì, ma in realtà è necessario creare due storyboard separati (1 per iPhone e 1 per iPad).

Nella storyboard di iPhone, trascina il mainwindow.xib nel mezzo del rootViewController e assicurati che vada a schermo intero.

Quindi, puoi fare tutto ciò che vuoi con lo storyboard dell'iPad.

Assicurati che i tuoi due file storyboard siano collegati correttamente nel riepilogo del tuo progetto!

+0

Sembra buono, farò un tentativo e vedrò cosa succede, grazie mille. – user1790012

0

Sarà più semplice per l'utilizzo di uno storyboard su iPad e pennini su iPhone se non si set di interfaccia principale (NSMainNibFile in Info.plist) o uno storyboard principale (NSMainStoryboardFile in Info.plist).

Invece, spostare la vostra applicazione delegato di MainWindow.xib e lasciare UIApplicationMain un'istanza passando il suo nome di classe come il quarto argomento UIApplicationMain in main. Fai in modo che l'app deleghi il proprietario del file di MainWindow.xib.

In delegato dell'app application:didFinishLaunchingWithOptions:, è possibile esaminare l'idioma dell'interfaccia.

Se l'idioma dell'interfaccia è iPhone, caricare MainWindow utilizzando -[NSBundle loadNibNamed:owner:options:].

Se il linguaggio interfaccia è iPad, creare la vostra finestra, carico MainStoryboard utilizzando +[UIStoryboard storyboardWithName:bundle:], istanziare il suo controllore vista iniziale con -[UIStoryboard instantiateInitialViewController], e impostare tale controller vista come controller della vista di root del vostro finestra.

3

Gazzini ha ragione e ha ottenuto la sua risposta in primo luogo mentre stavo facendo ricerche per confermare che questo era vero & relativamente semplice prima di riuscire a digitare la mia risposta. Quindi +1 a lui.

Tuttavia non sono necessari due storyboard separati. Hai solo bisogno di uno storyboard per un'architettura e dei tuoi file XIB per l'architettura che già supporti.

ecco uno screenshot che potrebbe aiutare a mostrare quello che ho fatto nel mio progetto di test:

Yes It Is Possible

è sufficiente modificare il plist della vostra applicazione per utilizzare un file "pennino" per la specifica architettura si per i file XIB già disponibili, quindi specificare gli storyboard per la nuova architettura.

+0

Grazie anche per la tua risposta, ma facendo qualche ricerca ho scoperto che per poter inviare un'app all'App Store, nel mio info.plist posso solo impostare NSMainNIBFile o UIMainStoryboardFile. Ho trovato questo nella guida di riferimento delle chiavi dell'elenco delle proprietà delle informazioni dove si dice "NSMainNIBFile: questo tasto si esclude a vicenda con la chiave" UIMainStoryboardFile "(pagina 77). Dovresti includere una delle chiavi nel tuo file Info.plist ma non entrambe ". – user1790012

Problemi correlati