我正在学习SwiftUI
在此期间,我已经创建了一个选项卡视图,其中有4个选项卡,其中在最后一个选项卡,有一个列表,其中有以下数组
struct NavItem {
let id: String
let text: String
}
struct ServicesView: View {
@State private var listItems: [NavItem] = [NavItem(id: "1", text: "Profile"),
NavItem(id: "2", text: "Leave"),
NavItem(id: "3", text: "How to use"),
NavItem(id: "4", text: "About Us"),
NavItem(id: "5", text: "Logout")]
字符串
使用LIST
我能够显示相同的视图正确,唯一的问题,我面临的是我不能推动新的选择任何项目
var body: some View {
NavigationView {
List (selection: $selection) {
ForEach(listItems, id:\.id) { item in
Button(action: {
if(item.id == "1"){
print("navigate to ----> " + item.text)
NavigationLink(destination: ProfileView()) {
Text("Show Detail View")
}
}
}) {
Text(item.text)
.foregroundStyle(.black)
}
.padding(10)
.listRowInsets(.init(top: 0,leading: -5, bottom: 0, trailing: -5))
.frame(minWidth: 111, idealWidth: .infinity, maxWidth: .infinity, alignment: .leading)
.tag(item.id)
.background(Color.clear)
}
}
}
}
型
当我在LIST中添加navigationLink时,它会给我下面这样的警告,
Result of 'NavigationLink<Label, Destination>' initializer is unused
型
我可以在控制台上打印,但我的列表无法导航到Profileview。
任何人都可以请帮助我了解我做错了什么。任何帮助将不胜感激。
先谢了。
1条答案
按热度按时间syqv5f0l1#
NavigationLink
表示一种视图,当你把它放在Button action中时,它不是一个要执行的函数。你必须把它带出闭包。更新内容:
ProfileView
的推流动作有触发条件,所以这是一个技巧:字符串
注意:
NavigationView
已弃用,您可以考虑使用NavigationStack
。型