Day 27 - ios 开发实作(今天还要继续吃吗APP-1、Swift UI Passing data 不同页面传值)

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

介绍

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

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

实作

一样我们先开一个新专案,这边提醒一下,因为我前面有专案是使用中文的,主要是方便懒得想英文,因为基本都没什麽问题,但在实作开发建议你使用英文,避免有编码上的错误。

建立主页

首先我们建立新的主页,这一页我们将导航到两个页面。

  • 计算热量
  • 列出所有今天吃的

所以概念我们清楚了,但这边我又发现了一个严重的问题。

我们之前传值是a传b,然後我要从a View跳b View。

但是这样很明显不是我们需要的方法。

Passing data via @ObservedObject and @StateObject

宣告方法

所以我们可以在其中一个地方去建立一个class。而这个class里面就会包含我的变数、Array等等。

以下是写法,我们必须它写在结构外面

class UserInput: ObservableObject {
    @Published var sum = [1]
}

我们要使用@Published 去宣告。

调用

接着,我们如果要调用该物件时

必须在结构里面这样写:

@StateObject var input = UserInput()

这边意思是说 我调用了UserInput这个class,并且将UserInput在结构中改成input。

所以说如果我今天要显示出sum这个Array中的第0个元素应该如何做呢?

input.sum[0]

意思指的就是input中的sum的0位元素。

这样一来我们就可以完整的使用Passing data在整个专案中了。但如果你只是要传给下一个View,那直接用@Binding也是可以的。


<<:  Day 13 懒得想变数吗? RSpec 有提供你啦

>>:  [Day12] THM Cyborg

this指向who(下)

调用function时,常会在function内的一堆动作中看到this关键字,而this就是记录呼...

Day25:25 - 优化 - 後端 - 订单Email通知

Mholweni,我是Charlie! 在Day24当中,我们完成了订单详情的部分,而今天我们将回头...

Day 20 测试router的前奏

昨天我们讲到使用context-util来让每个测试都包住Provider来达到测试的元件都能取得P...

Day.8 Reverse Linked List

Leetcode #206. Reverse Linked List 简单来说这一题要做反转链结 e...

初学者跪着学JavaScript Day8 : 资料型别:BigInt

ㄧ日客家话:中文:去哪里 客语:诶 ㄏㄧ 赖 诶 BigInt对数学、金融、科学来说是很重要的,因为...