如何解决将数据发送到下一个视图-SwiftUI
因此,我一直在尝试使用SwiftUI传递简单的数据。
基本上,以下脚本打印出一个项目列表(在HStack中),然后将每个项目链接到我们的Podcast()视图。
我想做的是将播客名称传递到下一个视图。我该如何实现 这个?因为所有示例都是关于我不使用的int的,而是使用String。
import SwiftUI
import RemoteImage
struct ContentView: View {
@State private var showAlert = false
@State var posts: [Program] = []
var body: some View {
NavigationView {
if posts.isEmpty {
Text("Loading")
} else {
ScrollView(.horizontal,showsIndicators: false) {
HStack(alignment: .bottom,spacing: 10) {
ForEach(posts) { post in
//return
NavigationLink(destination: Podcasts()){
RemoteImage(type: .url(URL(string:post.icon)!),errorView: { error in
Text(error.localizedDescription)
},imageView: { image in
image
.resizable()
.renderingMode(.original)
/* .clipShape(Circle())
.shadow(radius: 10)
.overlay(Circle().stroke(Color.red,lineWidth: 5))*/
.aspectRatio(contentMode: .fit)
.frame(width:200,height:200)
},loadingView: {
Text("Loading ...")
})
}
}
}.frame(height: 200)
}.frame(height: 200)
}
}.onAppear {
Api().getPosts { (posts) in
self.posts = posts
}
}.navigationBarTitle(Text("Home"))
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
播客视图
import SwiftUI
struct Podcasts: View {
var body: some View {
NavigationView{
Text("Hello")
}.navigationBarTitle(Text("Podcast"))
}
}
struct Podcasts_Previews: PreviewProvider {
static var previews: some View {
Podcasts()
}
}
解决方法
将帖子作为构造函数参数传递,例如
ForEach(posts) { post in
//return
NavigationLink(destination: Podcasts(post: post)){
所以现在
struct Podcasts: View {
let post: Program
var body: some View {
// !! DON'T ADD SECOND NAVIGATION VIEW IN STACK
// !! - THERE MUST BE ONLY ONE
Text(post.name)
.navigationBarTitle(Text("Podcast"))
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。