Verwendung von definesPresentationContext mit UIModalPresentationStyle.custom

8

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

präsentiert wird

Als Beispiel habe ich drei View-Controller: ROOT , A und B

%Vor%

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):

%Vor%

In meinem Präsentations-Controller (der auch mein UIViewControllerAnimatedTransitioning ist) stoße ich jedoch auf folgendes Problem:

%Vor%

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

aufgerufen %Vor%

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.

    
simeon 06.02.2017, 04:24
quelle

1 Antwort

0

Überschreiben Sie in Ihrer UIPresentationController -Unterklasse shouldPresentInFullscreen wie folgt:

%Vor%

Wie im Header UIPresentationController :

%Vor%

Dies zusammen mit definesPresentationContext sollte den Trick machen.

    
capikaw 01.08.2017 21:57
quelle