J'ai 2 images qui ont onTapGesture . Lorsque j'appuie sur une image, je peux voir que seule l'image sélectionnée est cliquée, mais mon problème concerne la fullScreenCover . Si je clique sur une image, l'affichage par défaut de l'image PersonMain passe ensuite à InboxView() . J'ai essayé de mettre le fullScreenCover à l'intérieur du onTapGesture mais cela ne fonctionne pas. Toutes les suggestions seraient formidables puisque je suis nouveau sur SwiftUI . J'ai également défini l'état isOpen sur false et l'ai transformé en true sur Tap, mais la première vue d'image InBoxView () est toujours celle qui apparaît.

struct MainView: View {
    @State var isOpen = true
    var body: some View {
        
        VStack(spacing: 7.0) {
            HStack(spacing: 7.0) {
                Image("PersonMain")
                    .padding(.leading, 30.0)
                    .buttonStyle(BorderlessButtonStyle())
                    .frame(width:20.0, height: 25.0)
                    .onTapGesture {
                        print("Profile")
                    }.fullScreenCover(isPresented: $isOpen,content: {
                        InboxView()
                   })
                
                Image("RankingMain")
                    .padding(.leading, 70.0)
                    .buttonStyle(BorderlessButtonStyle())
                    .frame(width: 20.0, height: 25.0)
                    .onTapGesture {
                        print("Ranking")
                    }.fullScreenCover(isPresented: $isOpen,content: {
                        SearchView()
                   })
         }
        }
      }
   }
1
user1591668 19 nov. 2020 à 03:01

1 réponse

Meilleure réponse

Il doit utiliser des états distincts pour chacun des fullScreenCover :

struct MainView: View {
    @State private var isOpen1 = false
    @State private var isOpen2 = false

    var body: some View {
        
        VStack(spacing: 7.0) {
            HStack(spacing: 7.0) {
                Image("PersonMain")
                    .padding(.leading, 30.0)
                    .buttonStyle(BorderlessButtonStyle())
                    .frame(width:20.0, height: 25.0)
                    .onTapGesture {
                        print("Profile")
                        self.isOpen1.toggle()
                    }.fullScreenCover(isPresented: $isOpen1, content: {
                        InboxView()
                   })
                
                Image("RankingMain")
                    .padding(.leading, 70.0)
                    .buttonStyle(BorderlessButtonStyle())
                    .frame(width: 20.0, height: 25.0)
                    .onTapGesture {
                        print("Ranking")
                        self.isOpen2.toggle()
                    }.fullScreenCover(isPresented: $isOpen2, content: {
                        SearchView()
                   })
         }
        }
      }
   }
1
Asperi 19 nov. 2020 à 05:25