Ein XIB ist ein Container für Objekte, es ist nicht gleich einem Fenster. Sie können ein XIB nicht zentrieren, Sie können nur ein in einem XIB enthaltenes Fenster zentrieren.
Auch die Objekte in der XIB werden erstellt, wenn Sie sie laden. Sie übergeben kein Objekt als Eigentümer, das dann für eines der Objekte in der XIB steht, stattdessen verwenden Sie IBOutlets, um Verweise auf die neuen Objekte zu erhalten, die beim Laden der XIB erstellt wurden, und Sie können dann mit ihnen interagieren.
Das Eigentümerobjekt der Datei ist ein spezielles Objekt in XIBs, da es das einzige Objekt ist, das nicht erstellt wurde und das Sie angeben können, indem Sie es an loadNibNamed:owner:
übergeben. Es ist Ihr Gateway zwischen den von XIB erstellten Objekten und Ihrer Anwendung.
Normalerweise ist das Eigentümerobjekt eine Art von Controller-Klasse. Legen Sie die Klasse des Eigentümers des Dateibesitzers in Interface Builder auf Ihre Controller-Klasse fest und definieren Sie dann einige IBOutlets in der Klasse. Sie werden im Interface Builder auf dem Besitzer der Datei angezeigt und Sie können Ihre Objekte in der XIB mit ihnen verbinden.
Schließlich, wenn Sie Ihr Controller-Objekt an loadNibNamed:owner:
übergeben, wird Cocoa Ihre IBOutlets mit den neu erstellten Objekten verbinden und Sie können sie verwenden, um mit ihnen interagieren, z. um ein Fenster in Ihrem XIB zu zentrieren.
Ich habe alles gemacht, was Sie schon gesagt haben, außer "Verbinden Sie den Fensterausgang des Dateibesitzers". Sobald ich das gemacht habe, hat alles funktioniert. Vielen Dank! +1 und Tick. –
Deaktivieren Sie die Eigenschaft "Wiederherstellbar" des Fensters in IB. –
@KeithSmiley Welcher Editor ist die 'Restorable'-Eigenschaft, oder gilt dies nicht mehr für Xcode 5.x? –