Was sind die Vorteile der Verwendung von Storyboards anstelle von XIB-Dateien in der iOS-Programmierung?

70

Was sind die Hauptunterschiede zwischen der Verwendung von Storyboards und XIB-Dateien?

Welche Vor- oder Nachteile hat die Verwendung eines Storyboards?

Leider konnte ich trotz einiger Recherchen auf Storyboards nur einfache Tutorials finden, die Ihnen zeigen, wie Sie ein Storyboard einrichten, anstatt konkrete Informationen zu geben, die erklären, was sie sind.

Steve
quelle
2
Wenn Sie auf Geräte mit <iOS 5-Storyboards abzielen möchten, sind diese nicht verfügbar.
NJones

Antworten:

83

Ein Storyboard ist:

  • Ein Container für alle Ihre Szenen (View Controller, Nav Controller, TabBar Controller usw.)
  • Ein Manager für Verbindungen und Übergänge zwischen diesen Szenen (diese werden Segues genannt)
  • Eine gute Möglichkeit, um zu verwalten, wie verschiedene Controller miteinander kommunizieren
  • Storyboards geben Ihnen einen vollständigen Überblick über den Ablauf Ihrer Anwendung, den Sie niemals durch einzelne schwebende NIB-Dateien erhalten können.
  • Ein Reduzierer aller "Unordnung", die auftritt, wenn Sie mehrere Controller mit jeweils einer eigenen NIB-Datei haben.

Ich benutze Storyboards jetzt schon eine Weile und der EINZIGE Nachteil ist, dass Sie nicht auf iOS 4 oder niedriger abzielen können. Storyboards funktionieren nur auf Geräten mit iOS 5 oder besser. Davon abgesehen gibt es viele Vorteile und die Nachteile sind IMO nicht vorhanden.

Das beste Tutorial, das ich gesehen habe, ist das von Ray Wenderlich

Wenn Sie Mitglied des Apple Developer-Programms sind, lesen Sie die WWDC-Sitzung des letzten Jahres auf Storyboards (iTunesU). Es ist großartig.

Ein weiterer großartiger Kurs (auch auf iTunesU) ist der neueste Stanford iOS Application Programming-Kurs.

LJ Wilson
quelle
3
Nein, es sieht so aus, als hätte jemand etwas kopiert und eingefügt. Ich habe dies 10 Monate vor Danials Post auf Stackoverflow gepostet. Du hast aber recht, sieht fast identisch aus lol.
LJ Wilson
Ja, ich habe die Daten gesehen. cmd + c cmd + v war tatsächlich in Bewegung!
Wojciech Rutkowski
2
Laut Gesetz darf die Person nur kopieren, wenn sie einem echten Autor Credits gibt :), da der Inhalt Creative Commons-Rechte hat. Ich habe schon einmal Copy Paste gemacht, aber das richtig gemacht. touchfever.blogspot.com.au/2012/06/… Für zukünftige Kopien paster! :)
TeaCupApp
Es scheint, dass die Seite nicht mehr viel aktualisiert wird, also machen Sie sich darüber keine Sorgen.
LJ Wilson
1
Ich möchte hinzufügen, dass Storyboards einen großen Nachteil haben - viel Glück, wenn mehrere Leute sie mit git / svn bearbeiten. Selbst das Öffnen des Storyboards markiert häufig Änderungen, die zu riesigen Konflikten führen. Trotzdem eignen sich Storyboards hervorragend für alles andere.
LyricalPanda
52

Storyboarding hat nicht nur Vorteile, sondern auch Nachteile - nur weil Sie um Eingabe gebeten haben:

  • Es ist nicht einfach, mit SBs in einem Team zu arbeiten, da nur ein Teilnehmer gleichzeitig am SB arbeiten kann (da es sich um eine Datei handelt).

-Das Folgende ist nicht wahr: - Wenn Sie Dinge tun müssen, die SB nicht anbietet, ist es nicht ganz einfach, SB mit programmatisch erstellten Ansichten zu mischen (nun, es ist jedoch möglich).

Die Faustregel scheint zu lauten: Je komplexer Ihr Projekt wird, desto besser sollten Sie sich nicht für SB entscheiden.

EDIT: - Ein weiterer Nachteil von SB: Umgehen aller lästigen Fehler von XCode in Bezug auf SB. ZB muss der DerivedData-Ordner wegen mehrerer Inkonsistenzen häufig geleert werden. Manchmal werden Storyboard-Dateien oder der Link zu ihnen beschädigt. Dann haben Sie vielleicht die Freude, nach dem Problem zu suchen. Schauen Sie sich diesen Thread an, um die Idee zu bekommen

EDIT 2 (März 2013): Inzwischen funktionieren Storyboards und Xcode viel besser, und Dokumentation und Best Practices sind weit verbreitet. Ich denke, die Arbeit mit Storyboard kann für die meisten Projekte empfohlen werden, auch wenn es immer noch einige Störungen gibt.

EDIT 3 (Sept 2013): Jetzt mit dem neuen Xcode 5-Format könnte die Arbeit in Teams mit SB noch besser werden, da es jetzt möglich zu sein scheint, SB-Code viel einfacher zusammenzuführen.

Noch eine BEARBEITUNG: Wenn Sie eine Stunde Zeit haben, lehnen Sie sich zurück, entspannen Sie sich und hören Sie diesen Leuten zu, die über dieses Thema diskutieren (Ray Wenderlich & Co).

Edit 2016.1: Nachdem ich lange Zeit ein Verfechter des Storyboards war, hatte ich in den letzten Monaten so viel Ärger damit, dass ich mich entschied, Storyboards so weit wie möglich aufzugeben. Der Grund dafür ist, dass Apple Funktionen wie dumm hinzufügt, sich aber nicht um die Fehler und Mängel kümmert. Die Leistung mit vielen Einschränkungen für das automatische Layout ist wirklich schlecht (während der Entwurfszeit), und die Fehleranfälligkeit ist enorm geworden. Beispiel: Noch weniger komplexe Storyboards geraten direkt nach dem Öffnen eines Projekts in Xcode in einen "Dirty-Modus" (siehe Git-Status). Tipp: Als Anfänger werden Sie Storyboards lieben, da Sie schnell Prototypen erstellen und Dinge ohne viel Code zum Laufen bringen können. Wenn Sie in einen Zwischenzustand eintreten, fügen Sie Ihrem Projekt mehr GUI-Code hinzu. Jetzt geht es zwischen Code und SB hin und her - und es läuft schlimmer.

Brainstray
quelle
Es würde mich sehr interessieren, ein Beispiel für Ihren zweiten Punkt zu sehen.
Sébastien
Eigentlich ist es ziemlich einfach, SB mit Nicht-SB-Code zu mischen. Hier ist eine Diskussion darüber, wie es geht: developer.apple.com/videos/wwdc/2012/?id=407
jbbenni
@jbbenni: du hast recht. Inzwischen ist die Dokumentation viel besser geworden und viele Fehler wurden behoben. Ich werde meine Antwort bearbeiten.
Brainstray
Die Arbeit mit Storyboards und der Quellcodeverwaltung kann etwas ärgerlich sein, da @brainray auf
NSTJ
9

Zusammenfassung

Nibs / .xib-Dateien und Storyboards sind Interface Builder-Dateien, die zum visuellen Erstellen einer Benutzeroberfläche für iOS- und Mac-Anwendungen in Xcode verwendet werden (ich verwende die iOS-Terminologie für Klassen, da diese Frage mit iOS gekennzeichnet ist, aber auch für die Mac-Programmierung gilt). .

Unterschiede

Federn sind für die Verwendung mit einer einzigen vorgesehen UIView. Sie können auch mit einer UIViewControllerUnterklasse verbunden werden, indem Sie die Klasse des Dateibesitzers auf eine beliebige Unterklasse von festlegen UIViewControllerund den Ansichtsausgang verbinden (ziehen Sie, um eine Verbindung mit dem Verbindungsinspektor im rechten Bereich von Xcode herzustellen).

Storyboards sollen die Benutzeroberfläche für 1 oder mehr enthalten UIViewController. Sie können Ihre gesamte Benutzeroberfläche in einem einzigen Storyboard erstellen oder in kleinere Teile aufteilen.

Vorteile

Storyboards sollten immer zugunsten von .xib-Dateien / Nibs (für View-Controller) verwendet werden. Storyboards bieten mehr Funktionen und werden von Apple aktiv entwickelt.

Jedes Argument für Nibs beruht auf der Tatsache, dass sie einzeln verwendet wurden, während Storyboards viele Szenen enthalten. Sie können für jedes UIViewControllergenauso einfach ein Storyboard verwenden wie für Nibs (siehe Codebeispiele unten). Lesen Sie weiter, um eine detaillierte Erklärung und Codebeispiele zu erhalten.

Detailliert

Warum sind Storboards Nibs überlegen?

Die Antwort liegt im Wesentlichen darin, dass Apple die Verwendung von Storyboards fördert und mehr Entwicklungsaufwand in sie steckt.

  1. Storyboards verfügen über Zoomfunktionen, die Nibs fehlen. Im Ernst, Sie können Nibs überhaupt nicht vergrößern, was beim Entwerfen für größere Bildschirme auf einem kleinen Laptop zum Kotzen ist.
  2. Bei Federn fehlen wichtige Funktionen wie:
    • Prototyp und dynamische Zellen für UITableView( weitere Informationen )
    • Die oberste Layout-Guide- Eigenschaft (siehe Kommentar)
    • Es gibt wahrscheinlich mehr, bitte bearbeiten oder kommentieren Sie, wenn Sie dieser Liste etwas hinzufügen möchten
  3. Sie müssen sich nicht mit dem Festlegen der Klasse des Dateibesitzers herumschlagen.

Das grundlegende Argument gegen Storyboards ist, dass das Zusammenführen aller View-Controller an einem Ort zu Zusammenführungskonflikten, einem langsamen Xcode, langsamen Erstellungszeiten und einem allgemeinen Problem führt. Daher wird allgemein empfohlen, für jede Feder eine Feder zu verwenden UIViewController.

Aber ... Sie können einfach ein Storyboard für jedes erstellen UIViewController. Eine gängige Praxis (zumindest für mich) besteht darin, die gesamte UIViewController-Initialisierung in einer Klassenmethode auszublenden (da keine andere Klasse den Namen der Datei kennen muss, in der sich das Nib / Storyboard des Controllers befindet). Vergleichen wir die zugehörigen Codefragmente, mit denen eine solche Methode erstellt werden kann. Eine einzelne Codezeile ist der gesamte Unterschied zwischen den beiden.

Ziel c

Storyboard

+ (ViewController *)create
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"ViewController" bundle:nil];
    return [storyboard instantiateInitialViewController];
}

Feder

+ (ViewController *)create
{
    return [super initWithNibName:@"ViewController" bundle:nil];
}

Verwendung

- (void)showMyViewController
{
    ViewController *vc = [ViewController create];
    [self presentViewController:vc animated:YES completion:nil];
}

Schnell

Storyboard

static func create() -> ViewController {
    let storyboard = UIStoryboard(name: "ViewController", bundle: NSBundle.mainBundle())
    return storyboard.instantiateInitialViewController() as! ViewController
}

Feder

static func create() -> ViewController {
    return ViewController(nibName: "ViewController", bundle: nil)
}

Verwendung

func showMyViewController() {
    let vc = ViewController.create()
    self.presentViewController(vc, animated: true, completion: nil)
}

Argumente

Ich werde alle üblichen Argumente für Nibs ansprechen; Wie ich bereits erwähnt habe, gibt es meistens einzelne Dateien, nicht als Argument für Nibs über Storyboards

  1. Teams und Zusammenschluss

Argument: Ein Storyboard mit vielen View-Controllern führt zu Zusammenführungskonflikten, wenn Sie in einem Team mit mehreren Personen arbeiten, die Änderungen vornehmen

Antwort: Ein einzelnes Storyboard verursacht nicht mehr Zusammenführungskonflikte als eine einzelne Feder

  1. Komplexität

Argument: Sehr komplexe Apps enthalten viele Szenen im Storyboard, was zu einem riesigen Storyboard führt, dessen Laden ewig dauert und das aufgrund seiner Größe kaum nachvollziehbar ist.

Antwort: Dies ist ein großartiger Punkt, aber Sie können Storyboards leicht in kleinere Teile zerlegen. Storyboard-Referenzen scheinen eine großartige Funktion zu sein, mit der Storyboards miteinander verknüpft werden können. Sie sind jedoch nur in Xcode 7 / iOS 9+ verfügbar. Auch immer noch kein Grund, einzelne Schreibfedern gegenüber Storyboards zu wählen.

  1. Wiederverwendbarkeit

Argument: Wenn Sie für jede UIViewControllerUnterklasse eine Schreibfeder erstellen, können Sie Code wiederverwenden, sodass Sie nicht alle Einschränkungen und Ausgänge für jede Szene in Ihrem Storyboard einrichten müssen.

Antwort: Auch hier kein Grund, einzelne Schreibfedern gegenüber einzelnen Storyboards auszuwählen.

Kevin
quelle
5

Es gab eine schöne Präsentation über StoryboardVor ein paar Monaten gab es auf dem LiDG-Treffen .

Persönlich würde ich sagen, dass dies der richtige Weg für eine neue App ist. Es gibt einige Lücken, insbesondere bei sehr komplexen Apps, aber die Vorteile überwiegen meistens die Nachteile.

Stephen Darlington
quelle
2
Es wäre schön, etwas Detaillierteres zu haben, aber nicht so einschläfernd wie das typische Apple-Zeug.
Hot Licks
Vielen Dank .. die Präsentation ist super !!
SwiftBoy
5

Einige weitere Vorteile von Storyboards:

  • Storyboards unterstützen Tabellenansichten besser. Das heißt, Sie können "Dynamic" - und "Prototype" -Zellen verwenden.
  • Es ist einfacher, View Controller mithilfe von Storyboards zu instanziieren. Sie können Dinge tun wie: [se lf.storyboard instantiateViewControllerWithIdentifer:]
  • Storyboards unterstützen View Controller-Container, sodass Sie untergeordnete View Controller grafisch anordnen können.

Nachteile sind:

  • Storyboards werden in XCode nur langsam gerendert, wenn sie viele Ansichts-Controller enthalten

  • Autolayout kann nicht für einen View Controller im Storyboard aktiviert werden.

Eisenbahnparade
quelle
3

Seien Sie vorsichtig, wenn Sie Storyboards verwenden, ist Ihre App nicht abwärtskompatibel mit älteren Betriebssysteminstallationen.

Beleg
quelle
1
Dies ist fast immer ein Problem, wenn Sie eine neue Funktion oder API verwenden. Wenn dies eine Anwendung zum Verkauf im App Store sein soll, dann verdient dies sicherlich einige Überlegungen. Wenn man bedenkt, wie viele iPhone 4S im letzten Quartal verkauft wurden und wie viele Geräte auf iOS 5 aktualisiert wurden, ist dies nicht annähernd das Problem, das die meisten glauben. Es ist auch sehr wichtig, mit den neuesten Funktionen und APIs auf dem neuesten Stand zu bleiben, da Sie als Entwickler sonst schnell zurückbleiben.
LJ Wilson
Es ist richtig, dass Sie mit den neuesten Funktionen und APIs Schritt halten sollten. Ich versuche immer, ein Projekt zu entwickeln, damit ich mit den neuen Funktionen experimentieren kann, wenn sie veröffentlicht werden, aber ich versuche, die neuen Inhalte aus meinen veröffentlichten Apps herauszuhalten, bis sie eine Weile verfügbar sind. Zugegeben, Storyboards sind fast so weit, dass sie berücksichtigt werden sollten.
Beleg
Storyboards sind ungefähr 8 Monate nach der Verwendung in Produktions-Apps. Da sie so einfach mit vorhandenen Schreibfedern koexistieren und iOS 5 von über 85% der iOS-Benutzer übernommen wurde, sehe ich keinen Grund, sie nicht zu verwenden. Ich habe mehr als 10 Produktions-Apps, die eine bestimmte Ebene der Storyboard-Benutzeroberfläche verwenden.
LJ Wilson
Dies ist eine bekannte Tatsache, wenn Storyboards verwendet werden. Die Antwort gibt keine vollständige Geschichte ...
Johan Karlsson
Um eine positive Bewertung zu erhalten, müssen Sie mehr Zeit damit verbringen, Ihre Antworten zu schreiben. Das Offensichtliche zu sagen ist nicht genug. Die Frage war, welche Vor- und Nachteile Storyboards haben.
Johan Karlsson
2

Ein Storyboard ist im Grunde ein Gerät, das Ihnen die Arbeit als Entwickler erleichtert. Es wird in eine Reihe von NIB-Dateien integriert, sodass die Leistung ziemlich gleichwertig ist. Als Entwickler ist es jedoch großartig, einen schnellen Überblick über Ihren gesamten Anwendungsfluss zu erhalten.

Ich beginne mit der Verwendung von Storyboards für neue Projekte, vorausgesetzt, ich kann den Client davon überzeugen, iOS 5 als Mindestversion zu akzeptieren. Dies liegt nur daran, dass ich es lieber so mache und weniger Zeit brauche, um die gleichen Aufgaben zu erledigen.

Ell Neal
quelle
1

Ihre Einstellung zum automatischen Layout kann sich auch darauf auswirken, ob Sie Storyboards verwenden möchten. Mit xibs können Sie das automatische Layout pro xib aktivieren oder deaktivieren, um eine Mischung innerhalb Ihrer Anwendung zu ermöglichen, während Storyboards Ihre Auswahl auf ALLE darin enthaltenen Ansichten anwenden.

Drew C.
quelle
Andererseits können Sie mehrere Storyboards verwenden.
KPM
1

Sie sehen das große Ganze in einer Sekunde. Wenn Sie viele NIB-Dateien haben, sehen Sie nicht das große Ganze. Einfachere Pflege Ihrer Programme. Einfacher zu verstehen, andere Programme ... unter anderem.

Ricardo
quelle
1

Vorteile:

1) Es ist sehr schön, Schnittstellen zu entwerfen

2) Sie können StoryBoard-Segues verwenden, um Navigations- / Modalbeziehungen auf coole Weise zu identifizieren.

3) Wenn Ihre App mehrere Geräte unterstützt, ist dies eine gute Möglichkeit, verschiedene Ansichten zu organisieren.

4) Prototyping ist ein weiterer zusätzlicher Vorteil.

5) Der Prototyp UITableViewCell kann Zeit sparen und auch die Menge des Codes reduzieren.

6) Mit StoryBoard können Sie alle Bildschirme der App an einem Ort sehen.

7) Sie können die Beziehung zwischen ihnen leicht anzeigen

8) Wenn Sie an einem Code arbeiten, können Sie den Ablauf der App besser verstehen.

9) Sie können die Benutzeroberfläche für iPhone 4 und iPhone 5 einrichten, indem Sie den Retina-Formfaktor aus dem Storyboard anwenden, ohne die App immer wieder auszuführen.

10) Kunden können den Prototyp der App sehen, bevor sie mit der Entwicklung beginnen. Hier hilft Ihnen das Storyboard sehr.

Nachteile:

1) Es ist nur in iOS 5+ verfügbar

2) StoryBoardSegues sind ziemlich starr und Sie können prepareForSegue oft verwenden.

4) Wie IB, nicht sehr freundlich mit anderen Display-Engines und Toolkits.

4) Erschwert das Teilen von Designs für eine einzelne Ansicht oder einen Satz von Ansichten - Sie müssen alles oder nichts senden.

5) Für das Storyboard benötigen Sie einen großen Bildschirm, speziell für das iPad.

6) Schwierigkeiten beim Kopieren von Ansichten aus anderen Apps in das Storyboard.

7) Probleme im Storyboard, wenn mehrere Entwickler mithilfe des Git-Repositorys an demselben Projekt arbeiten

von einer Ressource kopiert

Sandeep Rajbhar
quelle
Über die Nachteile: 1 ist kein Problem mehr. 4 ist falsch, verwenden Sie bitte kein großes, einzigartiges Storyboard für Ihre gesamte App, es sei denn, es ist einfach. Teilen Sie es einfach in konsistente Stücke. 7 gilt auch für xibs. Wenn es für Sie mit Storyboards schlimmer ist, haben Sie Ihre Storyboards nicht gut gestaltet. 8 macht keinen Sinn.
KPM
Können Sie Nachteil 8 klären? Ich verstehe dich nicht Danke im Voraus.
Ricardo
1

Storyboards haben viel mehr Probleme als Vorteile. Hier ist eine Liste ihrer Probleme, kopiert von iraycd :

  • Storyboards schlagen zur Laufzeit fehl, nicht zur Kompilierungszeit : Sie haben einen Tippfehler in einem Segue-Namen oder haben ihn in Ihrem Storyboard falsch verbunden? Es wird zur Laufzeit explodieren. Sie verwenden eine benutzerdefinierte UIViewController-Unterklasse, die in Ihrem Storyboard nicht mehr vorhanden ist? Es wird zur Laufzeit explodieren. Wenn Sie solche Dinge im Code tun, werden Sie sie während der Kompilierungszeit frühzeitig abfangen. Update : Mein neues Tool StoryboardLint löst dieses Problem größtenteils.

  • Storyboards werden schnell verwirrend : Wenn Ihr Projekt wächst, wird die Navigation in Ihrem Storyboard immer schwieriger. Wenn mehrere Ansichts-Controller mehrere Abschnitte zu mehreren anderen Ansichts-Controllern haben, sieht Ihr Storyboard schnell wie eine Schüssel Spaghetti aus, und Sie zoomen hinein und heraus und scrollen überall herum, um den gewünschten Ansichts-Controller zu finden für und um herauszufinden, welche Segue-Punkte wo. Update : Dieses Problem kann größtenteils gelöst werden, indem Sie Ihr Storyboard in mehrere Storyboards aufteilen , wie in diesem Artikel von Pilky und diesem Artikel von Robert Brown beschrieben .

  • Storyboards erschweren die Arbeit in einem Team : Da Sie normalerweise nur eine große Storyboard-Datei für Ihr Projekt haben, kann es Kopfschmerzen bereiten, wenn mehrere Entwickler regelmäßig Änderungen an dieser einen Datei vornehmen: Änderungen müssen zusammengeführt und Konflikte gelöst werden. Wenn ein Konflikt auftritt, ist es schwer zu sagen, wie er gelöst werden kann: Xcode generiert die Storyboard-XML-Datei und wurde nicht wirklich mit dem Ziel entwickelt, dass ein Mensch sie lesen oder gar bearbeiten müsste.

  • Storyboards machen Codeüberprüfungen schwierig oder nahezu unmöglich : Peer-Codeüberprüfungen sind eine großartige Sache für Ihr Team. Wenn Sie jedoch Änderungen an einem Storyboard vornehmen, ist es fast unmöglich, diese Änderungen mit einem anderen Entwickler zu überprüfen. Alles, was Sie aufrufen können, ist ein Unterschied zu einer riesigen XML-Datei. Es ist wirklich schwer zu entschlüsseln, was sich wirklich geändert hat und ob diese Änderungen korrekt sind oder ob sie etwas kaputt gemacht haben.

  • Storyboards behindern die Wiederverwendung von Code : In meinen iOS-Projekten erstelle ich normalerweise eine Klasse, die alle Farben und Schriftarten sowie Ränder und Einfügungen enthält, die ich in der gesamten App verwende, um ihr ein einheitliches Erscheinungsbild zu verleihen: Es ist eine einzeilige Änderung, wenn ich muss Passen Sie einen dieser Werte für die gesamte App an. Wenn Sie solche Werte im Storyboard festlegen, duplizieren Sie sie und müssen jedes einzelne Vorkommen finden, wenn Sie sie ändern möchten. Die Chancen stehen gut, dass Sie eines verpassen, da Storyboards nicht gesucht und ersetzt werden müssen.

  • Mit Storyboards können Sie alles zweimal erledigen : Erstellen Sie eine universelle App, die sowohl auf dem iPad als auch auf dem iPhone ausgeführt werden kann? Wenn Sie Storyboards verwenden, haben Sie normalerweise ein Storyboard für die iPad-Version und eines für die iPhone-Version. Um beide synchron zu halten, müssen Sie jede Änderung der Benutzeroberfläche oder des App-Workflows an zwei Stellen vornehmen. Yay. Update : In iOS 8 und Xcode 6 können Sie ein einzelnes Storyboard für iPhone und iPad verwenden.

  • Storyboards erfordern ständige Kontextwechsel : Ich arbeite und navigiere im Code viel schneller als in Storyboards. Wenn Ihre App Storyboards verwendet, wechseln Sie ständig Ihren Kontext: "Oh, ich möchte auf diese Tabellenansichtszelle tippen, um einen anderen Ansichts-Controller zu laden. Ich muss jetzt das Storyboard öffnen, den richtigen Ansichts-Controller finden und einen neuen Abschnitt erstellen Geben Sie dem anderen Ansichts-Controller (den ich auch finden muss) dem Segue einen Namen, merken Sie sich diesen Namen (ich kann keine Konstanten oder Variablen in Storyboards verwenden), wechseln Sie zurück zum Code und hoffen, dass ich den Namen nicht falsch eingebe das segue für meine prepareForSegue-Methode. Wie ich wünschte, ich könnte diese 3 Codezeilen genau hier eingeben, wo ich bin! " Nein, es macht keinen Spaß. Das Umschalten zwischen Code und Storyboard (sowie zwischen Tastatur und Maus) wird schnell alt und verlangsamt Sie.

  • Storyboards sind schwer umzugestalten : Wenn Sie Ihren Code umgestalten, müssen Sie sicherstellen, dass er immer noch den Erwartungen Ihres Storyboards entspricht. Wenn Sie Dinge in Ihrem Storyboard verschieben, werden Sie zur Laufzeit nur herausfinden, ob es noch mit Ihrem Code funktioniert. Es fühlt sich für mich so an, als müsste ich zwei Welten synchron halten. Es fühlt sich brüchig an und entmutigt meiner bescheidenen Meinung nach Veränderungen.

  • Storyboards können nicht durchsucht werden : Eine projektweite Suche in Xcode ist keine wirklich projektweite Suche, wenn Sie Storyboards verwenden. Sie werden nicht in die Suche einbezogen. Wenn Sie also eine benutzerdefinierte Klasse aus Ihrem Code entfernen oder umbenennen, müssen Sie das Storyboard manuell durchgehen oder das Roh-XML überprüfen, um sicherzustellen, dass es Ihren Codeänderungen entspricht. Nein, Sir, ich mag es nicht. Update : Storyboards können in Xcode 6 durchsucht werden.

  • Storyboards sind weniger flexibel : Im Code können Sie grundsätzlich alles tun, was Sie wollen! Mit Storyboards sind Sie auf eine Teilmenge dessen beschränkt, was Sie im Code tun können. Besonders wenn Sie einige fortgeschrittene Dinge mit Animationen und Übergängen tun möchten, werden Sie feststellen, dass Sie "gegen das Storyboard kämpfen", um es zum Laufen zu bringen.

  • Mit Storyboards können Sie den Typ der speziellen Ansichtssteuerungen nicht ändern : Sie möchten a UITableViewControllerin a ändern UICollectionViewController? Oder in eine Ebene UIViewController? In einem Storyboard nicht möglich. Sie müssen den alten Ansichts-Controller löschen, einen neuen erstellen und alle Segmente erneut verbinden. Es ist viel einfacher, eine solche Codeänderung vorzunehmen.

  • Storyboards fügen Ihrem Projekt zwei zusätzliche Verpflichtungen hinzu : (1) Das Storyboard-Editor-Tool, das das Storyboard-XML generiert, und (2) die Laufzeitkomponente, die das XML analysiert und daraus UI- und Controller-Objekte erstellt. Beide Teile können Fehler enthalten, die Sie nicht beheben können.

  • In Storyboards können Sie keine Unteransicht zu einem hinzufügenUIImageView : Wer weiß warum.

  • In Storyboards können Sie das automatische Layout für einzelne Ansichten (-Controller) nicht aktivieren : Durch Aktivieren / Deaktivieren der Option Auto Layout in einem Storyboard wird die Änderung auf ALLE Controller im Storyboard angewendet. (Danke an Sava Mazăre für diesen Punkt!)

  • Storyboards haben ein höheres Risiko, die Abwärtskompatibilität zu beeinträchtigen : Xcode ändert manchmal das Storyboard-Dateiformat und garantiert in keiner Weise, dass Sie Storyboard-Dateien öffnen können, die Sie heute in einigen Jahren oder sogar Monaten erstellen. (Dank an nachdenkliche Fortschritte für diesen Punkt. Siehe den ursprünglichen Kommentar )

  • Es ist McDonald's : Um es in Steve Jobs 'Worten über Microsoft zu sagen: Es ist McDonald's (Video) !

Eric
quelle
0

Vor iOS 7 waren Storyboards ordentlich, aber kein Muss. Sie führten so viele Probleme ein, wie sie lösten. iOS 7 neigte das Gleichgewicht zu Storyboards.

Mit iOS 8 und 9 ist dies keine Frage mehr: Verwenden Sie Storyboards!

Der Hauptnachteil von Storyboard ist, dass Sie vollständig von XCode abhängig sind und möglicherweise Stunden damit verbringen, Ihre Räder mit XCode-Fehlern zu drehen. Aber XCode ist viel besser geworden und die Vorteile von Storyboards sind jetzt zu zahlreich, um sie zu ignorieren. Zellenprototypen der Tabellenansicht, Größenklassen, Unterstützung für das automatische Layout usw.

Einige Hinweise:

  • Stellen Sie sich jedes Storyboard als Container für zusammengehörige Ansichts-Controller vor. Betrachten Sie es nicht als ein großartiges Layout Ihrer gesamten Anwendung.
  • Möglicherweise benötigen Sie mehr als ein Storyboard
  • Segues sind wirklich nur für die trivialsten Anwendungsfälle nützlich - dafür sind sie großartig. In einer realen App finden jedoch viele Übergänge innerhalb des Codes statt. Und das ist in Ordnung.
  • Schreiben Sie eine Kategorie, um View-Controller programmgesteuert aus den Storyboards zu instanziieren. Sie müssen also nur vc = SomeViewController.create () lassen, wobei die Methode alle Details behandelt (Storyboard ziehen, View-Controller aus Storyboard ziehen usw. ).
n13
quelle