2016-07-30 5 views
-1

Ich habe ein Problem mit der App, die ich gerade entwickle: eine meiner UIViewController s ist riesig (etwa 3000 Zeilen).Wie geht man mit riesigen View-Controllern um, damit der Code nicht schmutzig ist?

Vorerst habe ich Erweiterungen dieses View-Controllers erstellt, um Delegate-Methoden zu behandeln, um diesen Controller zu "teilen". Zum Beispiel habe ich meine Hauptansicht Controller XYZMainViewController aufgerufen und da dieser Controller der Delegierte von UITextField ist, erstellte ich eine Erweiterung XYZMainViewControllerTextFieldDelegateExtension.swift, in der ich UITextFieldDelegate Methoden verwalten.

Es ist immer noch ziemlich schmutzig, das auf diese Weise zu tun. Ich frage mich, was wäre eine gute Praxis, um große Controller wie diesen zu handhaben.

+0

https:.....//www.objc.io/issues/1-view-controllers/ –

+0

Ein riesiger Monitor? Kleine Schriftgröße? – matt

Antwort

0

Haben Sie darüber nachgedacht, Ihre App mit MVVM (Model View View Model) zu entwickeln? Die Idee von MVVM besteht darin, große Controller zu vermeiden. Es gibt viele Benutzerhandbücher, die erklären, wie MVVM in Ihrer IOS App verwendet wird. Ich war vor einem halben Jahr mit der gleichen Situation konfrontiert und dann adoptiere ich MVVM in meiner App und ich bin sehr zufrieden damit, da meine Controller nicht riesig sind, ich Code einfach in meiner App wiederverwenden kann und es auch viel einfacher Unit Tests zu erstellen . Bitte folgen Sie diesem Leitfaden, die erklären, was MVVM und wie

ithttps verwenden: //www.raywenderlich.com/74106/mvvm-tutorial-with-reactivecocoa-part-1

https://www.raywenderlich.com/74131/mvvm-tutorial-with-reactivecocoa-part-2

0

3000 Zeilen ist hmmmm hugeeeeee.

Sie haben eine große Anzahl von Aufgaben in Ihrem Controller ausgeführt. Controller sollen Views steuern. Meiner Meinung nach (die Art und Weise, wie ich meine iOS-App-Struktur erstelle), soll der Controller View-Control durchführen und Daten von Modellen zur Ansicht weiterleiten (genauer gesagt von Klassen, die Daten manipulieren).

"Separate Sorgen" ist hier wichtig. Implementieren Sie Ihre Geschäftslogik nicht in Controllern. Es sollte ein separates Modul geben, das all Ihre Geschäftslogik übernimmt. Wie man Modelle manipuliert und eine Funktionalität vervollständigt. Diese Klasse wird dann vom Controller zum Ausführen von Ansichtsupdates verwendet.

Unabhängig von der Art der Ansicht, die Sie entworfen haben, kann der Controller nicht aus 3000 Zeilen bestehen. Delegation ist kein Problem. Controller ist ein guter Ort, um eine Delegation durchzuführen. Innerhalb dieser Delegiertenmethoden ist es nicht die Aufgabe des Controllers, etwas zu erledigen. Es gibt einige Entwurfsmuster für IOS-Apps wie MVC, MVVM.

Aber immer noch müssen Sie effizient „, um diese Entwurfsmuster verwenden, um die gemeinsame Funktionalität in einem Ort usw. Implementierung der Geschäftslogik bewegen Manipulation von Modellen Kommunikation mit DataBase

Dank