webentwicklung-frage-antwort-db.com.de

So erstellen Sie Popovers mit Xcode Storyboards

Wie erstelle ich ein Popover in einem iPad Storyboard für eine iOS 5.0+ App?

Es gibt bereits ein Setup mit der Xcode-Projektvorlage (Utility-App), aber ich kann nicht herausfinden, wie Apple es zum Laufen gebracht hat. Ich habe versucht, es nachzuahmen, habe aber nur Fehler bekommen. Ich habe sogar auf Apples Dev Site nachgesehen, aber nur veralteten Code erhalten, der zu Warnungen und Buildfehlern führte.

Ich habe eine CBMainView und eine CBMasterView (mit Ausnahme der Master-Ansicht, die bereits enthalten ist) und eine UIToolbar mit einer UIToolbarButton. Ich möchte, dass der Benutzer auf die Schaltfläche für die UIToolbar tippt. Dann erscheint mein 320x300-Popover (CBMasterView).

Wie kann ich das mit Xcode Storyboards machen? Tutorials, Antworten, Code oder Links sind willkommen!

15
Samuel Spencer

Vor iOS 5 hätte man mit dem First Responder ein anderes UIViewController über eine Modal-Präsentation (und einen Stapel Code) anzeigen müssen.

Um ein Popover im Storyboard-Modus von Xcode (iOS 5+) zu erstellen, verwenden Sie UIButton oder UIToolbarButton und erstellen Sie eine Storyboard-Überblendung zwischen der Schaltfläche und dem UIViewController, das Sie Popover.

Das Erstellen einer Trennlinie zwischen einer Schaltfläche und einem anderen UIViewController ist einfach. Hier ist wie:

  1. Klicken Sie auf die Schaltfläche in Ihrem Storyboard und Control+Drag von der Schaltfläche bis zum UIViewController Ihrer Wahl. Sie sollten eine hellblaue Linie sehen, die sich von der Schaltfläche bis zur Spitze Ihrer Maus erstreckt.
  2. Nachdem Sie die blaue Linie auf den ViewController Ihrer Wahl gezogen haben, erscheint ein kleines schwarzes Menü. In diesem Menü werden die verschiedenen Segue-Optionen angezeigt. Wählen Sie Popover.

    Popover Segue Menu

  3. Wenn alles richtig gemacht wurde, sollte diese Leiste im Verbindungsinspektor sichtbar sein, wenn die Schaltfläche ausgewählt ist:

Use Popover instead of Modal or Push

Die von Ihnen erstellte UIViewController sollte auch eine benutzerdefinierte Größe haben, die kleiner als der Vollbildmodus ist. Sie können eine benutzerdefinierte Größe festlegen, indem Sie den View Controller auswählen und dessen Größeseigenschaft auf freeform oder master (320 x 850) festlegen.

31
Samuel Spencer

Ich bin auch auf der Suche nach der Antwort auf dieses Problem. Ich habe es mit NSNotification gelöst.

Hier ist wie:

Der View Controller, der das Popup anzeigt, sollte sich registrieren, um die Benachrichtigung zu erhalten:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];

languageSetup ist die Funktion, die aufgerufen wird. SPVWChangeLanguage ist eine Zeichenfolge, die Sie in Ihrem Popup-Ansichtscontroller definieren

Ich habe diese Zeile in viewDidAppear hinzugefügt

Fügen Sie nun in Ihrem Popup-Ansichtscontroller diese Zeile hinzu, wenn der Benutzer etwas in der Tabelle auswählt:

[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];

bevor Sie das Popup schließen:

[self.popOverController dismissPopoverAnimated:YES];

Das ist alles. Der Selector languageSetup (in meinem Fall) wird aufgerufen. Stellen Sie sicher, dass Sie die Benachrichtigung entfernen, wenn Ihr View Controller nicht mehr funktioniert:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Ich mache es in viewWillDisappear

Ich denke, es muss einen einfacheren Weg geben. Aber zumindest funktioniert dieser für mich.

0
alvira

Wenn du Storyboard mit IOS8 verwendest, sieh dir diesen Beitrag an und beantworte ihn für mich!

Wie ein Modal über der aktuellen Ansicht in Swift zu präsentieren

Kurz gesagt: Sie erstellen eine separate Popup-Ansicht, geben dem Hintergrund eine Farbe mit geringer (oder keiner) Deckkraft und stellen eine modale Verbindung zwischen Ihrer Hauptansicht und der Popup-Ansicht her.

Klicken Sie dann im Storyboard auf den Bereich und dann im Attributinspektor auf: Ändern Sie die Darstellung in "Über den aktuellen Kontext" (und wechseln Sie möglicherweise in die Überblendung, wenn Sie eine Deckkraft von mehr als 0 verwenden).

Der einfachste Weg, den ich je gesehen habe!

0
AnitaD