2017-05-18 6 views
0

Ich beabsichtige, eine ziemlich komplizierte App zu bauen, und ich frage mich, wie man es richtig gestaltet.gutes ios-Design mit mehreren Controllern

Ich habe einen Rootcontroller, der die Erstellung mehrerer Controller (VC1 bis VC5) steuert, von denen jeder mit seinem eigenen Storyboard verknüpft ist.

Also jedes dieser Storyboards sind recht komplex mit mehreren Ebenen von Controllern in der Regel von einem Navigationscontroller gesteuert.

Meine Frage ist die folgende: angenommen, dass der Benutzer den tiefsten Controller im Storyboard von VC1 verwendet. In diesem Controller befindet sich eine Schaltfläche. Wenn der Benutzer darauf klickt, möchte ich VC1 und alle damit verbundenen Controller schließen und auch einige Daten an den Rootcontroller senden lassen.

Meine Idee ist, VC1 bis VC5 woanders in der App aber von einem anderen Controller als Rootcontroller wieder zu verwenden.

Was ist das beste Design, um das zu erreichen? Thks

+0

Ich denke, es hängt vom Design und dem Fluss der App ab. Es fühlt sich zu allgemein an. Vielleicht können Sie einen UITabBarController verwenden? – DatForis

Antwort

1

Zunächst einmal gibt es kein bestes Design. Es gibt vielleicht besseres Design in dieser Welt für alles.

Ihr erster Auftrag:

Sie können mit 5 Tabs Tabbar-Controller verwenden. Jede Registerkarte verfügt über Navigationssteuerungen zur Aufnahme Ihres komplexen Designs.

Für die Datenübergabe:

  1. Unwind Segue.
  2. Delegierte.
  3. Benachrichtigungen.

Für Ihre Suche: Benutzer darauf klicken Ich möchte VC1 und alle damit verknüpften Controller zu schließen und auch einige Daten an den rootController geschickt zu haben.

Es gibt viele Tutorials, wie man zusammen mit Daten zum Root View Controller zurückgeht. Einer von ihnen ist passing-data-between-view-controllers Ich möchte nicht die ganze Prozedur, aber das Thema ist.

Ein von vielen Lösungen:

  1. zuweisen, dass die Daten zum Ziel VC‘Variable vor zu diesen VC .Für Navigation-Controller bewegen, zu RootView Controller zu bewegen,

    [self.navigationController popToRootViewControllerAnimated: YES];

wird verwendet. Hoffe ich habe etwas Licht gegeben. :)

+0

Eigentlich werde ich das anders mit einem Menü verwalten. Also werden VC1 bis VC5 von dort aus gestartet.Meine Frage hängt mehr mit der Weitergabe von Daten und der Benachrichtigung zusammen. Ich denke, es ist eine gute Idee, den Rootcontroller darüber zu informieren, dass er VC1 schließen kann. – user3239711

+0

Ich habe bereits erwähnt Datenübergabe und ich priorisierte es bereits.Wenn Sie jedoch meine Antwort nützlich finden, ist es mir ein Vergnügen. :) Schönen Tag. –

Verwandte Themen