iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Mobile Development

程式初學就來點swift吧!教你掌握整個蘋果生態圈!系列 第 27

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 26 - Watch os 開發學習3(輸入框、Picker)
下一篇
Day 28 - ios 開發實作 (今天還要繼續吃嗎APP-2)
系列文
程式初學就來點swift吧!教你掌握整個蘋果生態圈!30

尚未有邦友留言

立即登入留言