【发布时间】:2020-08-22 15:36:16
【问题描述】:
我试图在一个结构中包含两个NavigationLinks,我在List 和ForEach 中用作NavigationLink,但代码不起作用(导航不会发生在View ),代码如下:
struct mainView : View {
@State var people = [Person(name: "one", family: "1", type: "men"),Person(name: "two", family: "2", type: "women")]
var body : some View {
List{
ForEach(self.people, id:\.self){person in
NavigationLink(destination: Text("hi")) {
PersonView(person : person)
}.buttonStyle(BorderlessButtonStyle())
}
}
}
struct Person {
var name : String
var family : String
var type : String
}
struct PersonView : View {
@State var person : Person?
var body : some View {
HStack{
NavigationLink(destination: Text(self.person.name)) {
Text("this is \(self.person.name) \(self.person.family)")
}
NavigationLink(destination: Text(self.person.type)) {
Text(self.person.type)
}
}
}
}
我在阅读后添加了.buttonStyle ,它可能会有所帮助,但它什么也没做。我还尝试了以下 PersonView :
struct PersonView : View {
@State var person : Person?
@State var goToFirst = false
@State var goToType = false
var body : some View {
VStack{
Button(action:{
self.goToFirst.toggle()
}){
Text("this is \(self.person.name) \(self.person.family)")
}.buttonStyle(BorderlessButtonStyle())
Button(action:{
self.goToType.toggle()
}){
Text(self.person.type)
}.buttonStyle(BorderlessButtonStyle())
NavigationLink(destination: Text(self.person.name), isActive : self.$goToFirst) {
Text("").frame(width: 0.01, height: 0.01)
}
NavigationLink(destination: Text(self.person.type), isActive : self.$goToType) {
Text("").frame(width: 0.01, height: 0.01)
}
}
}
这也不起作用,当我单击单元格上的任意位置时,它会导航到Text("hi") ,当我单击相应区域时,它会导航到正确的View ,我应该怎么做。
重要提示:此视图正在从一个用 NavigationView 包裹的视图导航到
【问题讨论】:
-
考虑这个解决方案stackoverflow.com/questions/63497247/…。你的情况应该用同样的方法解决。
-
问题是我希望它是两个单独的“按钮”,用户可以单击而不是像您发送的那样双击单元格
标签: swiftui swiftui-list swiftui-navigationlink