[Swift] TraitCollectionDidChange - Probleme mit Multitasking

Thaddäus

Golden Noble
Mitglied seit
27.03.08
Beiträge
15.886
Hallo Leute

Ich habe hier folgende Ausgangslage:

Mein RootViewController zeigt Google Maps, sowie einige weitere Bedienelemente. Unter anderem gibt es da einen Button, der zu einem weiteren ViewController führt, der Modal angezeigt wird.

Innerhalb dieses zweiten ViewControllers habe ich eine "BaseView", in der alle Elemente des zweiten ViewControllers untergebracht sind. Die Hintergrundfarbe, der Grundview ist auf ClearColor gesetzt. Die View mit den Elementen habe ich für die "Compact" Sizeclass auf deinstalliert gesetzt, was soweit auch funktioniert.

NUR: Der viewController selbst existiert weiter. Das heisst, dass ich die Map auf dem RootViewController nicht mehr bedienen kann, sobald ich die zweite View ausgeblendet wird wenn ich in den Compact Mode übergehe.

Hier mal mein Code im zweiten ViewController, der so halb funktioniert:

Code:
 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
      
        super.traitCollectionDidChange(previousTraitCollection)
             
        if traitCollection.horizontalSizeClass == .compact {
      
            self.dismiss(animated: true, completion: nil)
        }
        else {
           if traitCollection.horizontalSizeClass == .regular{

                }
            }
        }
Das Problem dabei ist, dass der zweite ViewController damit (logischerweise) einfach verworfen wird, und somit der RootViewController wieder freigegeben wird. Würde mich nicht weiter stören, wenn ich nun noch einen Weg finden würde, diesen wieder zu holen, wenn ich in den Regular Mode zurückwechsle...

Ich hoffe, dass mir hier jemand helfen kann... :)
 
Zuletzt bearbeitet: