Frage

Ich bin sehr neu in Cocoa für Mac OS X, aber ich kann nicht helfen, aber das Gefühl, ich bin Interface Builder ständig kämpfen.

Meine aktuelle Situation ist, dass ich eine App baue, die mehrere benutzerdefinierte Steuerelemente und Ansichten haben. Ich begann die App im Interface Builder zu bauen, weil es zunächst sehr einfach war, die Dinge um zu ziehen und sie in die richtigen Stellen mit den richtigen Farben und den richtigen autosizing Regeln zu bekommen. Allerdings ist die Zeit gekommen, um meine benutzerdefinierte Steuerelemente und Ansichten zu errichten beginnen - was ich nicht gut in der Interface Builder darstellen kann, ohne den Aufbau ein IBPlugin durch die Arbeit zu gehen! Die einzige andere Option, die ich von ihm weiß, ist ein Interface Builder Dokument, das eine Reihe von „Benutzerdefinierte Ansichten“ alle über den Ort umfasst mit nur ihrer Klasse geändert. Es scheint, plötzlich sinnlos, sogar mit IB stören - vor allem in Anbetracht dieser Tatsache, dass diese Kontrollen und Ansichten Eigenschaften wie Farbe haben, die eingestellt werden müssen - ebenso wie die anderen Ansichten und Kontrollen bereits in dem IB-Dokument. So jetzt habe ich bekam Visualisierung Eigenschaften in zwei getrennten Stellen gesetzt werden und scheint einer der potentiellen Vorteile von IB zu begegnen, die es relativ einfach macht die Benutzeroberfläche der App zu optimieren, ohne in Code zu graben.

Ich bin auch mit einer Situation, wo ein paar Kontrollen ändern Eigenschaften (wie Farben) basierend auf Daten oder die aktuelle Auswahl konfrontiert. So, jetzt habe ich anfängliche Standardfarben der Kontrolle angegeben in Interface Builder, aber ich muß die datengesteuerte Farben in Code angeben? Wieder einmal Interface Builder scheint mir zu bewirken, haben einige Präsentationseinstellungen aufgeteilt zwischen IT-Welt ist und der Code. Ich nehme an, es ist möglich, dies etwas mit einem komplexen Plugin zu lösen, die über meine Daten oder Zustände oder was auch immer wissen, aber es scheint, als ob ich eine Tonne Unterstützung Code maintaing würde am Ende, die gerade so das Interface Builder Erfahrung bleibt vorhanden „richtig.“

Etwas anderes, dass ich oft erwähnt sehen, wie leicht IB können Sie Bindungen zwischen den Komponenten definieren. „Sie können es tun, ohne Code zu schreiben!“ Auch hier kann ich etwas fehlt, aber eine Eigenschaft auf eine andere Bindung ist eine einzige Zeile Code, soweit ich das beurteilen kann. Setzt ein paar Eigenschaften in einem Kasten in IB wirklich besser als eine einzige Zeile Code zu schreiben? Und warum ist es besser, das, was in der Präsentationsschicht der Spezifikation Anwendungslogik beträgt?

Wie ich am offenen sagte, bin ich zu diesen Cocoa Sachen ziemlich neu, aber ich fühle mich wie entweder ich etwas sehr Wichtiges über vermissten, wie Interface Builder zu verwenden, oder es ist in erster Linie für triviale Demo-Anwendungen mit einem hohen "wow" -Faktor.

War es hilfreich?

Lösung

Ich finde, dass Interface Builder ausgezeichnet ist das allgemeine Layout einer App für immer. Es ist auch wunderbar für Dinge wie Bindungen (auf dem Mac). Allerdings gibt es keine Möglichkeit, Delicious Library mit Interface Builder gehst zu erstellen. Je komplexer Ihre Schnittstelle, desto mehr Code Sie schreiben müssen.

Andere Tipps

Interface Builder kann ein wenig dauern gewöhnungsbedürftig. Aber, wie bereits erwähnt wurde, je mehr Sie es verwenden, desto besser ist es. Sicher, benutzerdefinierte Ansichten können in Code getan werden, aber IB ist ein Standard für einen Grund. Mac-Applikationen sind auf bestimmte Standards der UI Qualität von der Gemeinde statt, die viel höher ist als die UI-Standards für andere Plattformen. IB macht es viel einfacher, die diese Normen zu entsprechen, als alles, was im Code zu tun, ohne visuelle Referenz.

Und Sie müssen nicht alles in Code tun, um Ihre UI in der Versionskontrolle zu haben. Alle meine Cocoa-Projekte leben in ihrem eigenen Git Repository mit nib / xib Dateien enthält.

So gibt IB eine Chance. Es wird nur einfacher, je mehr Sie es verwenden.

Jeff LaMarche (von iPhone Entwicklung Ruhm) schrieb eine ausgezeichnete Artikel warum IB ist eine gute Wahl zu verwenden, auch wenn es nicht ‚scheint‘ den richtigen Weg, wenn Sie Vergangenheit grundlegend Tutorials. Ich hatte auf IB aus ähnlichen Gründen Ihnen aufgegeben, aber der Artikel inspirierte mich mit ihm weiter zu arbeiten, und es tut wirklich ist die richtige Lösung am Ende, auch wenn es die Aussenseiter Tendenz geht gegen nicht zu undichten Abstraktionen zu ermöglichen.

Mein erstes iPhone Programm, verfügbar für Verkauf, wie auch mein zweiter in der Entwicklung nicht Interface Builder verwenden. Ich mag sie alle in den Code haben, so kann ich verstehen, was passiert ist, und so, dass ich Version Tracking können Sie alle Änderungen verfolgen.

So weit ich weiß, es geht um eine Frage der Präferenz. Es gibt Cocoa Bücher gibt, die beiden Stile verwenden (IB und kein IB).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top