Day 28 - ios 开发实作 (今天还要继续吃吗APP-2)

首先我们介绍一下这个APP的功能。

介绍

这个APP主要会有的功能如下:

  • 计算今天吃的东西类型
  • 计算热量
  • 列出所有今天吃的热量、类型

所以以下是这个APP的概念方向

  • 主页
  • View A - 两个Picker 分别为 输入热量、类别。
  • View B - 包入一个list 里面包含计入的热量。

所以首先我们先建立整个基础。

不罗唆先上code。

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()
    }
}

讲解

接下来我会一个个区块分别细讲。

class UserInput

这边我们要使用昨天教的Passing data。首先用Publish建立两个Array。

这边两个Array分别装的就是纪录进去的热量、类别,这边底下会用到。

struct ContentView

这边就是我们的主画面,里面包含两个NavigationLink。

要特别注意的是里面会包含初始化UserInput。最後写上.environmentObject(input)。

struct a1

这里就来到比较复杂了。首先里面会看到两个Picker、一个Button,我们把要用值放在a、b两个array中。

接着就是两个Piccker包在Vstack里面。

最下面的Button负责运算把选好的值放进sum、summ里。把选好的用a、b叫出来,再分别传送到sum、summ里。这边Print出来的用意是为了电脑上做测试时看的,因为我怕没有加进去array所以把它print出来,这边非必要。

struct b1

这边我们就用@EnvironmentObject把sum、summ去调用出来,在下方显示出来就可以了!


<<:  学习Python纪录Day13 - Web API、JSON

>>:  Day13-元件渐变语动画

Event Correlation 事件相关性

通常分析 Event Correlation事件相关性,商业分析师 BA(Business Anal...

[Day17] CH10:排序大家族——插入排序法

今天第三天要登场的是插入排序法(Insertion Sort),我自己在玩扑克牌的时候,都是使用这种...

离职倒数11天:「怎样算好PM?」

这几天到处问别人「怎样算好PM?」 我的前同事告诉我公司有标准答案: MS leadership p...

Day06:跨部门沟通

文件:专案工作手册(维基)、专案文件 开会 电话、座位即时确认 ...

Day10-旧网站重写成Vue_1_收合式选单

今天开始来把这个我第一个网站写成vue版本 https://sweetyue9045.github....