唉~~延續昨天的問題,因為用了 save button 連結到 ShoppingCart View Controller,結果 Tab Bar 就消失了啊~~
消失的原因很簡單,就是因為用了 segue,他直接整個畫面跳離 Tab Bar controller,而直接調用了 ShoppingCart View Controller。那畫面當然只剩 ShoppingCart了...
我嘗試在ShoppingCart View Controller上做一個按鈕回 tab bar controller, tab bar就回來囉!
看起來好像可以,但是不是我們的初衷,另外返回 Tab Bar Controller後,陣列的資料都重新初始化,也全部歸0了啊~~
那問題就變成,怎麼用 save button 存資料,然後讓ShoppingCart View Controller 直接取用資料呈現,所以回到一開始的想法,用 userDefaults 來儲存資料
drinkViewControllew.swift中的prepare(for segue: UIStoryboardSegue, sender: Any?)也要槓掉
//    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//        if segue.identifier == "segue" {
//            let VC = segue.destination as! ShoppingCartViewController
//            teaList.forEach { teaList in
//                if teaList.value > 0 {
//                    if let i = selecTeaName.index(of: teaList.key) {
//                        selecTeaCount[i] = teaList.value
//                    } else {
//                        selecTeaName.append(teaList.key)
//                        selecTeaCount.append(teaList.value)
//                    }
//                } else {
//                    if let i = selecTeaName.index(of: teaList.key) {
//                        selecTeaName.remove(at: i)
//                        selecTeaCount.remove(at: i)
//                    }
//                }
//            }
//            VC.shoppingCartName = selecTeaName
//            VC.shoppingCartCount = selecTeaCount
//        }
一樣的判別式,只是這次把陣列存進 UserDefaults,方法可以參考我之前的文章 臨時儲存,並分別命名為 "TeaName" & "TeaCount"
    @IBAction func saveOrder(_ sender: UIBarButtonItem) {
        
        teaList.forEach { teaList in
            if teaList.value > 0 {
                if let i = selecTeaName.index(of: teaList.key) {
                    selecTeaCount[i] = teaList.value
                } else {
                    selecTeaName.append(teaList.key)
                    selecTeaCount.append(teaList.value)
                }
            } else {
                if let i = selecTeaName.index(of: teaList.key) {
                    selecTeaName.remove(at: i)
                    selecTeaCount.remove(at: i)
                }
            }
        }
        UserDefaults.standard.set(selecTeaName , forKey:"TeaName")
        UserDefaults.standard.set(selecTeaCount , forKey:"TeaCount")
        
        }

簡單說明一下,第一次點好飲料之好,按下 save 按鈕,結果購物車卻沒有顯示內容,但是重新開啟 App 之後,購物車就讀取到資料了!
這是因為 UserDefault 是存到本機,供下次重新開啟 App 後可以讀取。
接下來只要換個儲存方式就可以了~