2011-10-26 11 views
17

Ho creato un semplice progetto con uno storyboard e ora mi rendo conto che non supportano iOS 4.x e che vorrei che gli utenti con questi dispositivi potessero scaricare il mio app. L'app non è altro che un semplice controller di visualizzazione ed è abbastanza semplice, ma se c'è un modo per estrarre gli XIB dallo storyboard, preferirei farlo piuttosto che ricrearlo.Estrazione di pennini/xib da storyboard (iOS)

tl; dr: ottenere .xibs da una .storyboard?

risposta

9

Ho scoperto che il metodo più semplice era copiare e incollare gli elementi fuori dallo storyboard, una vista alla volta, e ricreare i controller di visualizzazione per ognuno.

Tuttavia, per chi fa questo, si noti che si deve fare un xib per MainWindow in aggiunta a tutte le altre XIBs, e collegarlo di conseguenza, compresa l'istituzione della finestra e applicazione delegato. Gli storyboard gestiscono tutto questo per te, quindi quando cerchi di evitarli, hai un sacco di impostazioni manuali che creano per te progetti non di storyboard dagli handle di get-go. Non fare ciò che ho fatto e provare a rendere il controller di root il controller principale della vista, perché diventerà matto dicendo cose su come UIApplication non è compatibile con valori-chiave per le singole proprietà del tuo XIB.

file
+0

se si potesse condividere il progetto di esempio, sarebbe fantastico! – Firdous

1

Non è possibile ottenere file xib. Lo storyboard è compilato su file di pennini e inserito in un file storyboardc all'interno del pacchetto di app.

Per individuare i file pennino, selezionare il file eseguibile costruito nel Finder e fare clic con il pulsante destro del mouse su "Mostra contenuto pacchetto". Passare alla directory en.lproj e trovare il file storyboard.storyboardc. Fai clic con il tasto destro del mouse su "Mostra contenuto pacchetto" nel file storyboard e troverai i tuoi pennini. Non ti saranno molto utili, perché sono dei pennini binari compilati.

0

Potrebbe non essere possibile estrarre i file .xib dallo storyboard, ma provare questo. Apri il tuo progetto basato su .xib e crea i file .xib vuoti per le tue visualizzazioni e apri allo stesso tempo il progetto storyboard. Seleziona tutti gli elementi dell'interfaccia utente nella scena degli storyboard e trascinali semplicemente sul progetto basato su .xib. Ho fatto questo il contrario (passando da .xib allo storyboard) senza problemi.

20

XIB non possono essere estratti dallo storyboard, ma è possibile creare un'istanza UIViewControllers fuori dello storyboard istanziando lo storyboard in un oggetto UIStoryboard e ottenere l'UIViewController tramite il suo identificativo, ecco come lo faccio:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName: 
          @"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 

    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"myId"]; 

spero che questo ti aiuti.

+0

Grazie, ma il mio obiettivo principale era evitare l'uso di storyboard nel progetto dopo che era già stato creato con loro: dovevo aggiungere il supporto per 4.0 per il quale non è possibile utilizzare gli storyboard. – Tim

+0

Non c'è modo di usare Outlet per riferirsi al controller con presa di corrente o no? –

+1

@Sparq, Risparmia tempo, stavo cercando questo, grazie. – Mysteltainn

4

Come pochi altri hanno suggerito, la soluzione migliore è quella di clonare le viste dallo storyboard in un XIB.

enter image description here

+0

Bello, questo è il modo più semplice fino a quando Apple aggiunge l'esportazione all'opzione xib su una vista selezionata in uno storyboard. –

+0

Qui quello che stai facendo è togliere la vista dalla scena e renderla una sottoview della Vista XIB. Puoi fare di meglio sostituendo la vista del XIB con quella della scena? Ho provato questo - e sembrava funzionare – etayluz

Problemi correlati