web-dev-qa-db-fra.com

SWIFTUI Faites défiler automatiquement en bas dans ScrollView (en premier) en premier)

Mon problème est que j'ai (à Swiftui) une vision de défilement avec un pourach à l'intérieur. Sachez quand le forach charge toutes mes entrées, je souhaite que la dernière entrée soit concentrée.

J'ai fait des recherches sur Google, mais je n'ai trouvé aucune réponse.

  ScrollView {
    VStack {
      ForEach (0..<self.entries.count) { index in
        Group {
          Text(self.entries[index].getName())
        }
      }
    }
  }
11
Leahpar

Faire défiler vers le bas sur le changement

Je n'ai pas encore assez de réputation pour poster un commentaire, alors vous allez ici @dam et @evert

Pour faire défiler jusqu'au bas chaque fois que le nombre d'entrées dans vos modifications ForEach Vous pouvez également utiliser la même méthode avec A ScrollViewReader, comme indiqué dans la réponse ci-dessus, par Ajout du modificateur de vue onChange Comme:

struct ContentView: View {
    let colors: [Color] = [.red, .blue, .green]
    var entries: [Entry] = Array(repeating: Entry(), count: 10)

    var body: some View {
        ScrollView {
            ScrollViewReader { value in
                            
                ForEach(0..<entries.count) { i in
                    Text(self.entries[i].getName())
                        .frame(width: 300, height: 200)
                        .background(colors[i % colors.count])
                        .padding(.all, 20)
                }
                .onChange(of: entries.count) { _ in
                    value.scrollTo(entries.count - 1)
                }
            }
        }
    }
}
1
noranraskin