Wie können Sie in einem iOS 5-Storyboard eine neue Szene von einem Popover auf den ursprünglichen View-Controller übertragen?

8

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:

  1. Erstelle ein neues Single View Application
  2. Wählen Sie Use Storyboards
  3. Wählen Sie die MainStoryboard.storyboard -Datei.
  4. Wählen Sie den einzigen View Controller aus, ändern Sie Title und Identifier in initialView und wählen Sie dann Editor->Embed In->Navigation Controller
  5. Ziehen Sie zwei neue View Controller -Objekte aus der Objektbibliothek in die Zeichenfläche
  6. Ändern Sie die Title und Identifier der neuen View Controller in: popoverView und newView .
  7. Fügen Sie ein Round Rect Button -Objekt aus der Objektbibliothek zu initialView und popoverView .
  8. hinzu
  9. Fügen Sie ein Label -Objekt aus der Objektbibliothek zu 'newView.
  10. hinzu
  11. Klicken Sie auf die Schaltfläche in initialView und ziehen Sie sie nach popoverView .
  12. Wählen Sie die Option Popover aus dem angezeigten Menü Storyboard Segues .
  13. Klicken Sie auf die Schaltfläche in popoverView und ziehen Sie sie auf newView .
  14. Wählen Sie im Menü Push die Option Storyboard Segues .
  15. Bauen & amp; Ausführen.

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?

    
lnafziger 16.10.2011, 19:21
quelle

2 Antworten

6

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.

    
Mark Adams 27.12.2011 23:19
quelle
1

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.

  1. Fügen Sie in Ihrer Implementierungsdatei für den Popover-View-Controller eine Aktion hinzu, wenn auf die Schaltfläche geklickt wird.

  2. 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.

    
UntitledNo4 25.10.2011 16:11
quelle