Je construis une application MacOS à Swiftui
j'essaie de créer une liste de réception où le premier élément est présélectionné. Je l'ai essayé avec l'état "sélectionné" de la navigationLink mais cela n'a pas fonctionné.
Je suis assez désemparé et j'espère que vous pouvez m'aider.
Le code de création de cette liste de liste ressemble à ceci.
//personList
struct PersonList: View {
var body: some View {
NavigationView
{
List(personData) { person in
NavigationLink(destination: PersonDetail(person: person))
{
PersonRow(person: person)
}
}.frame(minWidth: 300, maxWidth: 300)
}
}
}
(Autres vues en bas)
C'est la vue normale lorsque j'ouvre l'application. quand je clique sur un article, c'est ouvert comme celui-ci. C'est l'état que je veux comme état d'ouverture par défaut lorsque je rends cette vue.
Le code de cette vue ressemble à ceci:
//PersonRow
struct PersonRow: View {
//variables definied
var person: Person
var body: some View {
HStack
{
person.image.resizable().frame(width:50, height:50)
.cornerRadius(25)
.padding(5)
VStack (alignment: .leading)
{
Text(person.firstName + " " + person.lastName)
.fontWeight(.bold)
.padding(5)
Text(person.nickname)
.padding(5)
}
Spacer()
}
}
}
//personDetail
struct PersonDetail: View {
var person : Person
var body: some View {
VStack
{
HStack
{
VStack
{
CircleImage(image: person.image)
Text(person.firstName + " " + person.lastName)
.font(.title)
Text("Turtle Rock")
.font(.subheadline)
}
Spacer()
Text("Subtitle")
.font(.subheadline)
}
Spacer()
}
.padding()
}
}
Merci d'avance !
Grâce à cette discussion, en tant que débutant MacOS, j'ai géré une vision de navigation très basique avec une liste contenant deux navigationLinks à choisir entre deux vues. Je l'ai rendu très basique pour mieux comprendre. Cela pourrait aider les autres débutants. Au démarrage, ce sera la première vue qui sera affichée. Il suffit de modifier dans contentView.swift, autoelection = 0 par auto.selection = 1 Pour commencer avec la deuxième vue.
PremièreView.swift
import SwiftUI
struct FirstView: View {
var body: some View {
Text("(1) Hello, I am the first view")
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
Secondview.swift
import SwiftUI
struct SecondView: View {
var body: some View {
Text("(2) Hello, I am the second View")
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}
Contentview.swift
import SwiftUI
struct ContentView: View {
@State var selection: Int?
var body: some View {
HStack() {
NavigationView {
List () {
NavigationLink(destination: FirstView(), tag: 0, selection: self.$selection) {
Text("Click Me To Display The First View")
} // End Navigation Link
NavigationLink(destination: SecondView(), tag: 1, selection: self.$selection) {
Text("Click Me To Display The Second View")
} // End Navigation Link
} // End list
.frame(minWidth: 350, maxWidth: 350)
.onAppear {
self.selection = 0
}
} // End NavigationView
.listStyle(SidebarListStyle())
.frame(maxWidth: .infinity, maxHeight: .infinity)
} // End HStack
} // End some View
} // End ContentView
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Résultat: