2015-08-26 21 views
5

Sto cercando di implementare un segue menu della pagina nella mia app utilizzando il baccello da this pre-built page menu pod from githubOttieni nome pennino/Cosa è esattamente un pennino?

Nelle istruzioni, si dice:

var controller : UIViewController = UIViewController(nibName:"controllerNibName", bundle: nil) 
    controller.title = "SAMPLE TITLE" 
    controllerArray.append(controller) 

Questo è il mio codice:

var chatAreaCtrl : UIViewController = ChatAreaCtrl(nibName: "ChatAreaCtrl", bundle: nil) 
    chatAreaCtrl.title = "Chats" 
    controllerArray.append(chatAreaCtrl) 

Che mi viene l'errore:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ...(loaded)' with name 'ChatAreaCtrl'' 

Sono abbastanza nuovo per la programmazione e Swift ma suppongo che non sto specificando ciò che il pennino è correttamente?

Grazie!

+0

I file 'nib' sono file di risorse in cui si progettano i controller vista/vista. Puoi leggere di più qui: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html – Losiowaty

+0

Ho letto questo ma non ho ancora capito quale sia il nome esatto. Il nome del pennino è lo stesso del controller? –

+0

È il nome del file nel progetto. Ha bisogno di esistere fisicamente. Se stai costruendo le tue viste interamente in codice, non è necessario utilizzare questo inizializzatore di 'UIViewController'. Un semplice vecchio 'init()' sarà sufficiente. – Losiowaty

risposta

4

I nibfile sono il vecchio nome dei file dell'interfaccia utente. Attualmente sono file .xib (l'estensione del file è cambiata un po 'di tempo fa). Ma gli sviluppatori della vecchia scuola, e i metodi, usano ancora il termine pennino.

I file Nib (o i file XIB, se si preferisce) sono ancora supportati, ma la maggior parte delle persone usa invece gli storyboard.

Se si crea un file dell'interfaccia utente in Xcode e lo si salva con il nome ChatAreaCtl.xib, sarà possibile inizializzarlo con il codice visualizzato.

L'equivalente con storyboard potrebbe essere quella di creare una nuova scena nel vostro storyboard che definisce l'interfaccia per il controller della vista, quindi utilizzare instantiateViewControllerWithIdentifier per creare un'istanza di tale controller della vista (instantiateViewControllerWithIdentifier è la storyboard equivalente a initWithNibName:bundle:. Oppure mi immagino Devo dire UIViewController(_nibName:bundle:) per Swift. Sto ancora usando la sintassi per i modelli di funzioni in Swift.)

+0

Grazie per averlo chiarito. Ecco un link utile per tutti i neofiti dopo di me ... [collegamento] (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIStoryboard_Class/index.html#//apple_ref/doc/uid/TP40010909-CH1-SW2) –

+4

Il termine "nib" è storico ed è l'acronimo di "NextSTEP Interface Builder". "xib" è una versione XML di un "pennino". Un "pennino" rappresenta solo una singola viewController invece di più come fa uno Storyboard. – vacawama

+0

Sì. Proprio come il prefisso "NS" in tutte le classi Foundation sta per NextStep. NSObject è l'abbreviazione di NextStepObject, ad esempio. –