Ich entwickle eine iOS App und jetzt bin ich ratlos. Ich versuche Daten vom ersten View Controller an die erste Registerkarte eines TabBarViewControllers zu übergeben (mit dem Storyboard). Ich habe eine Menge Tutorials gefunden, in denen erklärt wird, wie Daten zwischen View-Controllern übertragen werden, aber in meiner Tab-Leiste funktioniert nichts. Ich weiß, dass der Tab-Bar-Controller eine Art Array von Ansichten enthält. Die Beziehung zwischen dem View-Controller und dem Tab-Bar-Controller wird über einen Schiebeschalter (Push) realisiert. Also dachte ich, es ist einfach, die prepareForSegue () - Methode zu verwenden. So:
%Vor%Leider ist die Beziehung zwischen dem Tab-Bar-Controller und jeder Tab-Leiste-Ansicht kein echter Übergang. Es ist nur eine "Beziehung". Das heißt, es gibt keine Überleitungskennung, die ich für die oben genannte Methode verwenden kann. Gibt es eine Möglichkeit, in diesem Fall prepareForSegue zu verwenden? Wenn nicht, irgendwelche Ideen, wie man dieses Problem löst? Ich weiß, dass es eine ähnliche Frage gibt, aber die Antwort war nicht so hilfreich. Muss ich für jede Registerkarte (Ansicht) innerhalb des Tab-Controllers eine neue Datei erstellen? Oder ist es möglich, eine Klasse (m. & Amp; h.) Für den gesamten Registerkarten-Controller zu haben, die mit objectAtIndex () auf die verschiedenen Ansichten zugreift?
Vielen Dank im Voraus!
Hier ist mein Setup, das funktioniert hat:
tab
) ViewController
TabBarController
TabsViewController
(gemeinsam für beide) Setup labelString
-Eigenschaft in Tab-Leiste-Controller:
In TabBarController.h
:
In TabBarController.m
:
Setup prepareForSegue
Methode in ViewController.m
:
Setup UILabel
s für Child-Registerkarten-View-Controller.
UILabel
in beide untergeordneten View-Controller Erstellen Sie eine Eigenschaft in TabsViewController.h
:
Hook 5.1
und 5.2
up im Storyboard
Setup ViewDidLoad
Methode in TabsViewController.m
:
Wenn Sie jetzt auf die erste und zweite Registerkarte klicken, werden die Bezeichnungen Tab 0: This has been set
bzw. Tab 1: This has been set
angezeigt.
Wie zeigen Sie Ihren TabBarViewController von Ihrem UIViewController?
Ich rate mit einem Übergang. Wenn Sie so vorgehen, können Sie Daten an diesen UITabBarController übergeben, der für alle Controller innerhalb der Registerkarten "übergeordnet" ist.
Wenn Sie beispielsweise eine Zeichenfolge an den UITabBarController übergeben möchten, definieren Sie eine Eigenschaft in diesem Controller und legen diese vor dem Segment fest.
%Vor%Dann haben Sie mit der Delegate-Methode den ausgewählten View-Controller, sodass Sie die Parent-Eigenschaft an die untergeordneten Elemente übergeben können:
%Vor%Sieh dir Singletons an. Innerhalb einer Registerkarte erstellen Sie eine Instanz einer Hilfsklasse, die die Singleton-Vorlage implementiert, um sicherzustellen, dass es tatsächlich nur eine einzige Instanz gibt. Das heißt, wenn die zweite Registerkarte dieselbe Hilfsklasse instanziiert, hat sie Zugriff auf dasselbe Objekt, mit dem Sie Ihre Daten teilen können ...
z. B. Ссылка
Als erstes:
1- Sie möchten die Daten aus irgendeinem Grund an Ihre Registerkarte weitergeben ...
oder:
2- Sie möchten die Daten an Ihren Tab übergeben, dann können Sie zu einem anderen UIViewController
gehen?
Wenn es die zweite Option ist, ist das Singleton das gebräuchlichste Muster dafür. Wo Sie allgemeine Daten aufbewahren können, die von verschiedenen Teilen der Anwendung verwendet / wiederverwendet werden können.
Der einfachste Weg besteht darin, eine benutzerdefinierte Klasse zu erstellen und den Wert vom Controller zur benutzerdefinierten Klasse zu setzen und dann den Wert von der benutzerdefinierten Klasse zum Controller zu übernehmen.
Beispielcode ist hier:
Erstellen Sie zuerst eine benutzerdefinierte Klasse zum Beispiel
AppUtility.h
%Vor%AppUtility.m
%Vor%FirstController.m
Importieren Sie die benutzerdefinierte Klasse in den Controller
%Vor%Legen Sie den Wert vom ersten Controller zur benutzerdefinierten Klasse fest. Verwenden Sie den folgenden Code, um den Wert festzulegen:
%Vor%Zweiter Controller.m
Importieren Sie die benutzerdefinierte Klasse in den Controller
%Vor%Hier erhalten Sie den Wert aus der benutzerdefinierten Klasse, verwenden Sie den folgenden Code, um den Wert zu erhalten:
%Vor%In AppUtility-Klasse Verwenden Sie nslog-Anweisungen, um zu überprüfen, ob die Werte korrekt sind oder nicht
Tags und Links objective-c ios storyboard viewcontroller tabbarcontroller