Ich versuche herauszufinden, wie die verschiedenen Status eines UISegmentedControl zum Wechseln der Ansichten verwendet werden können, ähnlich wie Apple es im App Store tut, wenn zwischen "Top Paid" und "Top Free" gewechselt wird.
ios
objective-c
iphone
uisegmentedcontrol
Mark Adams
quelle
quelle
In meinem Fall sind meine Ansichten ziemlich komplex und ich kann nicht einfach die verborgene Eigenschaft verschiedener Ansichten ändern, da dies zu viel Speicherplatz beanspruchen würde.
Ich habe mehrere Lösungen ausprobiert und keine davon hat für mich funktioniert oder ist unregelmäßig ausgeführt worden, insbesondere mit der titleView der navBar, die beim Push / Popping von Ansichten nicht immer die segmentedControl anzeigt.
Ich habe diesen Blog-Beitrag über das Problem gefunden, in dem erklärt wird, wie es richtig gemacht wird. Anscheinend hatte er die Hilfe von Apple-Ingenieuren auf der WWDC'2010, um diese Lösung zu finden.
http://redartisan.com/2010/6/27/uisegmented-control-view-switching-revisited
Die Lösung in diesem Link ist zweifellos die beste Lösung, die ich bisher zu diesem Problem gefunden habe. Mit ein wenig Anpassung funktionierte es auch gut mit einer TabBar am unteren Rand
quelle
Wenn es sich um eine Tabelle handelt, können Sie die Tabelle neu laden und in cellForRowAtIndex die Tabelle basierend auf der ausgewählten Segmentoption aus verschiedenen Datenquellen füllen.
quelle
Eine Idee ist, dass die Ansicht mit den segmentierten Steuerelementen eine Containeransicht hat, die Sie mit den verschiedenen Unteransichten füllen (als einzige Unteransicht der Containeransicht hinzufügen, wenn die Segmente umgeschaltet werden). Sie können sogar separate Ansichts-Controller für diese Unteransichten haben, obwohl Sie wichtige Methoden wie "viewWillAppear" und "viewWillDisappear" weiterleiten müssen, wenn Sie sie benötigen (und ihnen muss mitgeteilt werden, unter welchem Navigations-Controller sie sich befinden).
Im Allgemeinen funktioniert das ziemlich gut, da Sie die Hauptansicht mit Container in IB auslegen können und die Unteransichten den Platz füllen, den der Container zur Verfügung hat (stellen Sie sicher, dass Ihre Masken für die automatische Größe richtig eingerichtet sind).
quelle
Versuchen Sie es mit
SNFSegmentedViewController
einer Open-Source-Komponente, die mit einem Setup genau das tut, wonach Sie suchenUITabBarController
.quelle
Aus der Antwort von @Ronnie Liew erstelle ich Folgendes:
quelle
Weisen Sie .H in zu
Deklarieren Sie .M
quelle
Schnelle Version:
Der übergeordnete Ansichtscontroller ist für das Festlegen der Größe und Position der Ansicht jedes untergeordneten Ansichtscontrollers verantwortlich. Die Ansicht des untergeordneten Ansichtscontrollers wird Teil der Ansichtshierarchie des übergeordneten Ansichtscontrollers.
Faule Eigenschaften definieren:
Untergeordnete Ansichtssteuerungen ein- / ausblenden:
SegmentedControl tapEvent verwalten
Und natürlich können Sie in Ihren untergeordneten View-Controller-Klassen Folgendes verwenden:
Referenz: https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/
quelle
Eine schnelle Swift-Version:
quelle