Swiftui 如何通过点击ForEach中的按钮导航到不同的屏幕/视图

Swiftui 如何通过点击ForEach中的按钮导航到不同的屏幕/视图,swiftui,Swiftui,我已经创建了一个仪表板,在lazyVGrid上有9个按钮,还有一个ForEach循环来显示各种按钮 (单击展开) 现在,我想根据按下的按钮导航到各种新屏幕。有人,请帮我做到这一点 LazyVGrid(columns: row, spacing: 25) { ForEach(Dashboard_Data) { data in

我已经创建了一个仪表板,在lazyVGrid上有9个按钮,还有一个ForEach循环来显示各种按钮


(单击展开)

现在,我想根据按下的按钮导航到各种新屏幕。有人,请帮我做到这一点

LazyVGrid(columns: row, spacing: 25) {
                
              
                ForEach(Dashboard_Data) { data in
                    
                    Button(action: {
                                             
                            // action
                        }) {
                            
                        ZStack(alignment: Alignment(horizontal: .trailing, vertical: .top)) {
                            
                            VStack(alignment: .leading, spacing: 5) {
                                
                                Spacer(minLength: 0)

                                Text(data.data)
                                    .font(.title)
                                    .fontWeight(.bold)
                                    .foregroundColor(.white)
                                
                                HStack{
                                    Spacer(minLength: 0)
                                    Text(data.suggest)
                                        .font(.system(size: 17, weight: .regular))
                                        .lineLimit(2)
                                        .foregroundColor(.white)
                                        
                                }
                            }.padding()
                            .background(Color(data.image))
                            .cornerRadius(20)
                            .shadow(color: Color.black.opacity(0.5), radius: 5, x: 0, y: 5)
                            
                            Image(data.imageIcon)
                                .renderingMode(.template)
                                .foregroundColor(.white)
                                .font(.system(size: 25, weight: .regular))
                                .padding(10)
                                .background(Color.white.opacity(0.15))
                                .clipShape(Circle())
                        }
                        
                      
                    }
                }
                
            }
var主体:一些视图{
LazyVGrid(列:行,间距:25){
ForEach(仪表板_数据){中的数据
导航链接(目的地:getTheDestination(数据)){
//按钮的标签/设计
}
}
}
}
私有函数获取目标(数据:)->某些视图{
//在此函数中添加一些输入参数,以从仪表板数据中获取数据/信息
//根据ur数据返回目的地视图
如果data.data==“您的价值”{
返回文本(u-data.data)
}
返回文本(“目的地”)
}
变量主体:一些视图{
LazyVGrid(列:行,间距:25){
ForEach(仪表板_数据){中的数据
导航链接(目的地:getTheDestination(数据)){
//按钮的标签/设计
}
}
}
}
私有函数获取目标(数据:)->某些视图{
//在此函数中添加一些输入参数,以从仪表板数据中获取数据/信息
//根据ur数据返回目的地视图
如果data.data==“您的价值”{
返回文本(u-data.data)
}
返回文本(“目的地”)
}

使用IOS14中的sheet或fullScreenCover将新屏幕rap root呈现到
NavigationView
中,并使用
NavigationLink
进行导航,如中所示。嗨,它已经在NavigationView中了。我需要一种方法来跟踪按下了哪个按钮,并根据该选择,我需要显示一个新屏幕。您的仪表板数据是否包含有关目标/您要导航到的视图的数据/信息?@KrishnaKumarL类似于在按钮中定义动作,您可以像在我的回答中一样定义NavigationLink。在IOS14中使用sheet或fullScreenCover将新屏幕rap root呈现到
NavigationView
中,并使用
NavigationLink
中的导航。您好,它已经在NavigationView中了。我需要一种方法来跟踪按下了哪个按钮,并根据该选择,我需要显示一个新屏幕。您的仪表板数据是否包含有关目标/要导航到的视图的数据/信息?@KrishnaKumarL像在按钮中定义操作一样,您可以像在我的回答中一样定义NavigationLink。
    var body: some View{
            LazyVGrid(columns: row, spacing: 25) {
                ForEach(Dashboard_Data) { data in
                    NavigationLink(destination: getTheDestination(data)) {
                        //label/design of your button
                    }
                }
            }
        }
        
        private func getTheDestination(data:<put ur dataType of Dashboard_Data> ) -> some View {
            // add some input parameter in this func to get data/informattion from your Dashboard_Data
            // according to ur data return the destination view
if data.data == "your value" {
return Text( _ data.data)
}
           return Text("Destination")
        }