



我添加了一個Array sum(),我把在A1()這個View裡面加數值進去sum(),但點進b1()後,b1()讀到的Array 仍然只有第一個位置而已。請問這個要怎麼解決?
另外想詢問 假設今天 我有這樣一個程式 裡面包含添加今日成績,當我輸入一個成績,就存在Array裡,Array每多一個數值,在我的secondView裡的list就多一個Text方塊(顯示今輸入過的成績,一個個顯示下來)。這樣要如何做到這樣的效果呢?因為我目前學的都是要先設定好Text。
先感謝各位大大!
小弟菜雞,解答
import SwiftUI
@main
struct IThelp_01App: App {
    @StateObject var  userInput = UserInput()  //更動
    var body: some Scene {
        WindowGroup {
            ContentView()
                .environmentObject(userInput)  //更動
        }
    }
}
import SwiftUI
struct a1: View {
    var a = [100,200]
    @State var karl = 0
    @State var karlusum = 0
    @EnvironmentObject var input : UserInput  //更動
    var body: some View {
        
        Picker(selection:$karl, label:  Text("請輸入熱量")) {
            Text("100").tag(0)
            Text("200").tag(1)
        }
        Button(action:{
            karlusum = 0
            karlusum = a[karl]
            input.sum.append(karlusum)
            print(input.sum)
        }, label: {
            Text("確認")
        })
    }
}
struct a1_Previews: PreviewProvider {
    static var previews: some View {
        a1()
            .environmentObject(UserInput())  //更動
    }
}
class UserInput: ObservableObject {
    @Published var sum = [1]
}
struct b1: View {
    @EnvironmentObject var input : UserInput    //更動
    var body: some View {
        VStack{
            Text("\(input.sum[2])")
            
            //這個應該是你問題的解答
            ForEach(input.sum, id: \.self) { i in
                Text("\(i)")
            }
            
        }
    }
}
struct b1_Previews: PreviewProvider {
    static var previews: some View {
        b1()
            .environmentObject(UserInput())   //更動
    }
}
之前看 https://youtu.be/vL0w3kvng0o 都沒看動
被留言講一下小開竅
感謝您的解答~ 可惜早就解決了~ 我後來是使用 Passing data via @ObservedObject and @StateObject 完成的! 有興趣的話可以參考這裡文章