Domanda

Base sulla documentazione e codice di esempio che ho vissuto, ho avuto l'impressione che, quando una classe definita in Xcode viene letto in e configurato in Interface Builder, un oggetto basato sulla classe viene effettivamente creato e memorizzato in un XI ter o il file del pennino. Quindi l'oggetto è pronto per essere utilizzato quando viene avviata l'applicazione corrispondente.

In alternativa, per le classi che non sono stati trattati da Interface Builder, codice come ad esempio le "nuove" dichiarazioni devono essere scritti in Xcode esplicitamente in modo che gli oggetti associati ad essere creato e utilizzato.

Sarà molto bello avere persone che sono più informato di me per confermare o per correggere la mia comprensione molto ingenuo di Interface Builder ...

È stato utile?

Soluzione

La vostra comprensione è corretta, ma incompleta. Sì, Interface Builder un'istanza di classi e li serializza nel NIB. Tuttavia, tali oggetti non sono automaticamente disponibili per il vostro codice.

Per ogni oggetto IB si desidera accedere attraverso Xcode, è necessario dichiarare una variabile IBOutlet. Esempio:

IBOutlet NSWindow* mainWindow;  // A Reference to your main window

inserire questo codice nel file di intestazione di un oggetto personalizzato che si crea un'istanza attraverso Interface Builder (trascina un oggetto generico al tuo elenco di classe, quindi nella scheda Identità della finestra di ispezione, impostare l'oggetto personalizzato da un'istanza della classe ). Quindi, fare clic destro sul vostro oggetto personalizzato in Interface Builder. Si dovrebbe vedere una voce per l'IBOutlet nella finestra che si apre. Trascinate dal piccolo cerchio accanto ad essa per (in questo esempio) la finestra principale. Ora avete un riferimento all'oggetto IB in Xcode.

E 'attraverso di effettuare tali collegamenti (con IBOutlets per riferimenti e IBActions per i metodi) che si definiscono gran parte del comportamento dell'applicazione.

Altri suggerimenti

I file pennino contengono una copia archiviata di un oggetto grafico; tutto NSNib o NSBundle ha bisogno di sapere, al fine di creare nuove istanze di tutti gli oggetti memorizzati nel file pennino, collegati tra loro come descritto da attacchi del pennino, e con le loro proprietà impostate sui valori specificati nel pennino.

L'intero processo è documentato in Il oggetto Caricamento processo

Gli oggetti non vengono creati automaticamente da un pennino, ma piuttosto creato su richiesta in risposta ad un oggetto carico il file pennino. La differenza è importante perché si può avere un carico singolo oggetto un pennino più di una volta o di avere più oggetti caricare lo stesso file pennino.

Per esempio ho potuto creare un pennino in cui "proprietario del file" è UIViewController che lega un oggetto UIView singola a 'vista' del proprietario del file di proprietà. Ho potuto quindi avere due diverse sottoclassi UIViewController (o due istanze dello stesso UIViewController sottoclasse) Carico lo stesso file pennino per ogni ottenere la propria copia del UIView. Allo stesso modo potrei caricare una nuova UITableViewCell da un pennino ogni volta che ho bisogno di una nuova cella per un tavolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top