Ich benutze View Controller Containment, um eine Reihe von Kind-View-Controllern zu verwalten, die in der Lage sein sollen, andere View-Controller auf benutzerdefinierte Weise modal darzustellen.
Ich bin auf ein Problem gestoßen, bei dem die Eigenschaft definesPresentationContext
nicht verwendet ist, wenn von einem View-Controller mit UIModalPresentationStyle.custom
Als Beispiel habe ich drei View-Controller: ROOT
, A
und B
A
ist das Kind von ROOT
. Ich möchte B
modally von A
anzeigen, während ich benutzerdefinierte UIPresentationController
, UIViewControllerTransitioningDelegate
und UIViewControllerAnimatedTransitioning
verwende.
Also mache ich Folgendes innerhalb des Codes für Controller A
(beachten Sie Controller A
hat definesPresentationContext
auf true
gesetzt):
In meinem Präsentations-Controller (der auch mein UIViewControllerAnimatedTransitioning
ist) stoße ich jedoch auf folgendes Problem:
In dieser Funktion, wo ich fromVC
vom Typ A
erwarte, ist es tatsächlich ROOT
. Trotz der Tatsache, dass A
definesPresentationContext
angibt.
Ich denke, das liegt daran, dass ich UIModalPresentationStyle.custom
verwende. Also ändere ich es in UIModalPresentationStyle.overCurrentContext
Dies führt dazu, dass iOS die definesPresentationContext
-Eigenschaft von A
richtig liest, und meine animateTransition
-Funktion wird jetzt mit dem richtigen View-Controller aufgerufen, aber:
Da mein modaler Darstellungsstil nicht mehr .custom
ist, wird die folgende Methode in meinem übergehenden Delegaten nicht mehr
So wird mein Präsentations-Controller unbenutzt.
Ich möchte einen .custom
modalen Übergangsstil, der definesPresentationContext
berücksichtigt. Ist das möglich? Fehle ich etwas?
Grundsätzlich möchte ich eine benutzerdefinierte modale Präsentation im aktuellen Kontext.
Tags und Links ios uiviewcontroller uipresentationcontroller uimodalpresentationstyle