Modale Entlassung während Ansichtsübergängen in SwiftUI [geschlossen]IOS

Programmierung für iOS
Guest
 Modale Entlassung während Ansichtsübergängen in SwiftUI [geschlossen]

Post by Guest »

Ich stoße in SwiftUI auf ein Problem, bei dem Modalitäten während Ansichtsübergängen innerhalb eines ZStack automatisch verworfen werden. Konkret wechsle ich zwischen zwei Ansichten mithilfe einer if-Bedingung, die von einer Zustandsvariablen gesteuert wird. Eine der Ansichten enthält eine Schaltfläche, die ein Modal mit .sheet darstellt. Wenn sich jedoch der Status ändert und die App in die andere Ansicht wechselt, wird das Modal verworfen, auch wenn der Benutzer nicht damit interagiert hat.
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>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post