In meiner größeren App ist die Situation komplexer. Die App wurde ursprünglich mit einem Hauptteil in UIKit erstellt. Ich arbeite jetzt an der Umstellung auf SwiftUI. Bei UIWindow-Übergängen in UIKit ist dieses Problem bisher nicht aufgetreten, da das Modal unabhängig von den Änderungen der Ansichtshierarchie offen blieb.
Das Modal wird nicht direkt von der Ansicht im ZStack dargestellt, sondern von einem tieferen untergeordneten Element Sicht. Aus diesem Grund habe ich keine Möglichkeit, den Zustand des Modals während dieser Übergänge direkt zu steuern oder beizubehalten. Dies stellt eine Herausforderung dar, wenn erwartet wird, dass das Modal über Ansichtsänderungen hinweg geöffnet bleibt.
Es scheint, als würde SwiftUI den Wechsel zwischen den if-Bedingungen in einem ZStack so behandeln, als würde die Ansichtshierarchie vollständig entfernt und neu erstellt, was dazu führt, dass das Modal geschlossen wird. Gibt es einen empfohlenen Ansatz, um zu verhindern, dass Modals bei solchen Übergängen verworfen werden?
Ich habe einige Ansätze ausprobiert, um dieses Problem zu lösen:
- Ich habe für meine zweite Ansicht ein Overlay verwendet, um zu vermeiden, dass das erste mit dem Modal entfernt wird. Allerdings bleibt die Überlagerung unter dem Modal, was nicht das beabsichtigte Verhalten ist.
Ich habe auch versucht, den Modifikator .fullScreenCover für meine zweite Ansicht zu verwenden, aber SwiftUI lässt nur ein .sheet zu Ich habe versucht, einen zIndex festzulegen, um die Schichtung von Ansichten zu steuern, aber auch das hat das Problem nicht gelöst.< /li>