2011-01-17 6 views
0

Ich habe eine funktionierende App mit einem Navigationscontroller, zwei View-Controllern, zwei Ansichten, einem Modellobjekt und keiner XIB-Datei. Die Ansichten werden programmatisch erstellt. Jetzt möchte ich die gleiche App mit IB und Xib-Dateien erstellen. Kennt jemand eine Aufschreibung, die erklärt, wie man xib-Dateien hinzufügt und die Programmanweisungen löscht, die sie ersetzen? Wenn nicht, dann etwas, das die Äquivalenzen zwischen XIB-Bibliothekselementen und Programmanweisungen diskutiert?Kann ich eine Nicht-Xib-App in Xibs umwandeln?

Warum möchte ich das tun? Weil ich versuche zu verstehen, was XIB-Dateien tun und wie sie mit Programmanweisungen interagieren, und ich dachte, dies wäre eine gute Lernübung. Ich habe einen Versuch unternommen, konnte es aber nicht kompilieren. Jedes Mal, wenn ich XIB-Dateien benutze, mit Ausnahme der folgenden Lehrbuchbeispiele, bin ich hoffnungslos in Code verwickelt, der nicht kompiliert wird oder nicht funktioniert, wenn er kompiliert wird. Also muss ich ein grundlegendes Missverständnis haben. Ich muss herausfinden, was XIB-Dateien hinter den Kulissen tun. Sie scheinen potentiell sehr mächtig zu sein, aber ich werde sie nicht benutzen, wenn ich nicht verstehe, was sie tun.

Ich habe an anderer Stelle im Stapelüberlauf gelesen, dass sie eine serialisierte Version einer kompilierten Ansicht (oder so ähnlich) sind. Ich verstehe das konzeptionell. Ich kenne die Pickle-Dateien von Python genau. Aber das erklärt in der Praxis nicht viel.

Antwort

1

Eine Nib/Xib enthält die Informationen, die zum Erstellen und Verbinden von Objekten benötigt werden. Im Grunde enthält es Instanzvariable und Klasseninformationen für die Objekte, die es enthält. Um einen zu laden, verwenden Sie die UINib-Klasse (NSNib in Mac OS X) oder die NSBundle loadNib ... -Methoden. Die Methoden von NSBundle sind einfacher zu verwenden, und ich würde vorschlagen, sie zu verwenden, es sei denn, Sie laden eine Feder mehrmals. Für iOS würden Sie normalerweise [[NSBundle mainBundle] loadNibNamed:@"NibNameWithoutExtension" owner:self options:nil]; verwenden. Der Besitzer muss nicht self sein. Es ist das Objekt, das durch das Objekt "Dateieigentümer" in IB repräsentiert wird und alle Verbindungen zu diesem Objekt erhält. Der Optionsparameter kann verwendet werden, um die Objekte der obersten Ebene in der Schreibspitze zu erhalten, aber Sie verwenden normalerweise stattdessen Steckdosen. Wenn eine Nib geladen wird, werden die darin enthaltenen Objekte zugewiesen und instanziiert (mit initWithCoder :), und Verbindungen werden mithilfe von Setter-Methoden oder durch direktes Setzen der Instanzvariablen erstellt.

Verwandte Themen