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