LoginView.swift
SwiftUI
1import SwiftUI 2 3struct LoginView: View { 4 5 var body: some View { 6 NavigationView { 7 8 VStack { 9 //VStackやHStackを入れないとNavigationViewが機能しないらしい。 10 Text("ようこそ") 11 .font(.system(size: 60)) 12 .fontWeight(.thin) 13 Divider().padding() 14 Spacer() 15 16 17 NavigationLink(destination: HomeView()) { 18 HStack { 19 20 Image(systemName: "person") 21 .foregroundColor(.gray) 22 Text("ログイン") 23 .font(.title) 24 .fontWeight(.thin) 25 } 26 } 27 Divider().padding(20) 28 NavigationLink(destination: EmptyView()) { 29 HStack(alignment: .center) { 30 Image(systemName: "pencil.circle") 31 .foregroundColor(.gray) 32 Text("登録はこちらから!") 33 .font(.title) 34 .fontWeight(.thin) 35 36 } 37 } 38 Divider().padding(20) 39 NavigationLink(destination: NotificationView(notification: testData, posts: testPosts)) { 40 HStack { 41 Image(systemName: "paperplane") 42 .foregroundColor(.gray) 43 Text("お知らせ") 44 .font(.title) 45 .fontWeight(.thin) 46 } 47 48 } 49 Spacer() 50 } 51 52 } 53 } 54} 55 56struct ContentView_Previews: PreviewProvider { 57 static var previews: some View { 58 LoginView() 59 } 60}
HomeView.swift
import SwiftUI struct HomeView: View { var body: some View { TabView { TimeLineView(posts: testPosts) .tabItem { Image(systemName: "house") .font(.title) } .tag(1) Text("Tab Content 2") .tabItem { Image(systemName: "heart") .font(.title) } .tag(2) Text("user") .tabItem { Image(systemName: "person") .font(.title) } .tag(3) } } } struct HomeView_Previews: PreviewProvider { static var previews: some View { HomeView() } }
TimeLineView.swift
SwiftUI
1import SwiftUI 2 3struct TimeLineView: View { 4 var posts: [Posts] = [] 5 var body: some View { 6 List(posts) { posts in 7 HStack { 8 VStack { 9 Image(posts.imageOfUser) 10 .resizable() 11 .scaledToFit() 12 .clipShape(Circle()) 13 .overlay(Circle().stroke(Color.white, lineWidth: 1)) 14 .shadow(radius: 10) 15 .frame(width: 66, height: 66) 16 Spacer() 17 } 18 VStack { 19 HStack { 20 Text(posts.name).bold() 21 Text("@" + "(posts.username)").fontWeight(.light) 22 Spacer() 23 }.padding(5) 24 Text(posts.text) 25 } 26 } 27 } 28 Text("text") 29 } 30} 31 32struct TimeLineView_Previews: PreviewProvider { 33 static var previews: some View { 34 TimeLineView(posts: testPosts[0]) 35 } 36}
Posts.swift
import SwiftUI struct Posts: Identifiable { var id = UUID() var name: String var username: String var text: String var numReply: Int var numRepost: Int var numLike: Int var imageOfUser: String { return name + "Thumb" } } let testPosts = [ Posts( name: "マクドナルド", username: "McDonaldsJapan", text: "選べる2つの食感!...", numReply: 29, numRepost: 3087, numLike: 17000), Posts( name: "こが", username: "testtest", text: "長門市の.....", numReply: 1, numRepost: 0, numLike: 4) ]
やりたいこと:
この、LoginView()、HomeView()、TimeLineView()と、Postsを使って、ツイッターのように、テストデータ用データからユーザーネームや本文などを取得して、タイムライン表示させたいです。
上の画像のログインボタンを押すと、
↑こちらの画面に遷移して、ライムラインのように表示させたいです。エラーが出るため
SwiftUI
1Text("text") 2```を代わりに置いています。") 3 4```SwiftUI 5var posts:[Posts] = []
や、
SwiftUI
1let posts: Posts
などの記述が間違っているとエラーがでていて、自力じゃどうすればいいかわからなかったので、質問させていただきました。
拙い文でしたが、なんとか伝わればと思います。
ご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。