首先我們介紹一下這個APP的功能。
這個APP主要會有的功能如下:
所以以下是這個APP的概念方向
所以首先我們先建立整個基礎。
不囉唆先上code。
import SwiftUI
class UserInput: ObservableObject {
    @Published var sum:[Int] = [1]
    @Published var summ:[String] = ["1"]
}
struct ContentView: View {
    @StateObject var input = UserInput()
    var body: some View {
        NavigationView{
            VStack{
                NavigationLink(
                    destination: a1(),
                    label: {
                        Text("點進來計算熱量")
                    })
                NavigationLink(
                    destination: b1(),
                    label: {
                        Text("點進來計查看今日攝取")
                    })
            }
        }
        .environmentObject(input)
    }
}
struct a1: View {
    var a = [100,200]
    var b = ["中餐","晚餐"]
    @State var karl = 0
    @State var category = 0
    @State var karlsum = 0
    @State var categorysum = "0"
    @EnvironmentObject var input: UserInput
    var body: some View {
        VStack{
            Picker(selection: $karl, label: Text("請輸入熱量")) {
                Text("100").tag(0)
                Text("200").tag(1)
            }
            Picker(selection: $category, label: Text("請輸入類別")) {
                Text("中餐").tag(0)
                Text("晚餐").tag(1)
            }
            Button(action: {
                karlsum = 0
                karlsum = a[karl]
                categorysum = "0"
                categorysum = b[category]
                input.sum.append(karlsum)
                input.summ.append(categorysum)
                print(input.sum)
                print(input.summ)
            }) {
                Text("確認")
            }
        }
        
    }
    
}
struct b1: View {
    @EnvironmentObject var input: UserInput
    var body: some View {
        Text(String(input.sum[1]))
        Text(input.summ[1])
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
        a1()
        b1()
    }
}
接下來我會一個個區塊分別細講。
這邊我們要使用昨天教的Passing data。首先用Publish建立兩個Array。
這邊兩個Array分別裝的就是紀錄進去的熱量、類別,這邊底下會用到。
這邊就是我們的主畫面,裡面包含兩個NavigationLink。
要特別注意的是裡面會包含初始化UserInput。最後寫上.environmentObject(input)。
這裡就來到比較複雜了。首先裡面會看到兩個Picker、一個Button,我們把要用值放在a、b兩個array中。
接著就是兩個Piccker包在Vstack裡面。
最下面的Button負責運算把選好的值放進sum、summ裡。把選好的用a、b叫出來,再分別傳送到sum、summ裡。這邊Print出來的用意是為了電腦上做測試時看的,因為我怕沒有加進去array所以把它print出來,這邊非必要。
這邊我們就用@EnvironmentObject把sum、summ去調用出來,在下方顯示出來就可以了!