Ich erstelle einen PopoverSegue von einem neuen View-Controller und möchte einen dritten View-Controller auf den ursprünglichen Stack schieben. So erstelle ich die Anwendung:
Single View Application
Use Storyboards
MainStoryboard.storyboard
-Datei. Title
und Identifier
in initialView
und wählen Sie dann Editor->Embed In->Navigation Controller
View Controller
-Objekte aus der Objektbibliothek in die Zeichenfläche Title
und Identifier
der neuen View Controller in: popoverView
und newView
. Round Rect Button
-Objekt aus der Objektbibliothek zu initialView
und popoverView
. Label
-Objekt aus der Objektbibliothek zu 'newView. initialView
und ziehen Sie sie nach popoverView
. Popover
aus dem angezeigten Menü Storyboard Segues
. popoverView
und ziehen Sie sie auf newView
. Push
die Option Storyboard Segues
. Klicken Sie auf die erste Schaltfläche und das Popover wird angezeigt. Wenn Sie jedoch auf die Schaltfläche im Popover klicken, passiert nichts (es sollte die neue Ansicht verschieben, tut dies aber nicht).
Was ich möchte tun, ist es, auf den Navigation Controller
Stack zu schieben, aber ich bin mir nicht sicher, wie ich das Storyboard dafür einrichten soll.
Irgendwelche Ideen?
Sie erwarten, dass sich die UINavigationController
-Hierarchie in ein dargestelltes Popover erstreckt. Es wird nicht. Gleiches gilt für die Darstellung von Modal View Controllern. Wenn Sie self.navigationController
in popoverView
protokollieren würden, würden Sie sehen, dass es null ist.
Betten Sie popoverView
in seine eigene UINavigationController
ein. Denken Sie daran, dass Sie, wenn Sie prepareForSegue:sender:
überschreiben und versuchen, das Popover zu konfigurieren, das topViewController
von destinationViewController
holen müssen, da das Ziel jetzt eine Instanz von UINavigationController
ist.
Klingt wie es sollte funktionieren, aber wenn es nicht Folgendes versucht: 1. Klicken Sie auf das Segment, das nicht funktioniert, und geben Sie ihm einen Bezeichner. Nehmen wir an, es ist PopoverToNewSegue.
Fügen Sie in Ihrer Implementierungsdatei für den Popover-View-Controller eine Aktion hinzu, wenn auf die Schaltfläche geklickt wird.
Diese Funktion sollte void zurückgeben und die folgende Zeile hinzufügen: [self performSegueWithIdentifier: @ "PopoverToNewSegue" sender: self];
Das sollte dein Rennen laufen lassen. Ich habe bemerkt, dass die Übergänge nicht immer so funktionieren, wie Sie es erwarten, aber dieses funktioniert für mich ohne Fehler.
Tags und Links ios xcode storyboard ios5 uipopovercontroller