訂飲料App part1

終於算是半完成這個訂飲料的App了,為什麼說是半完成呢,因為後續還想要在一些功能上去,像是刪除等等,另外或許可以再增加tab,讓內容可以更豐富一些。在寫這個作業的時候終於了解為什麼peter會出這道題目,其實有點像是總複習,把之前所上過所學過的東西都應用上去,想當然在寫的同時也去翻了很多之前上課的內容,除此之外也去參考了一些之前學長姐寫過的程式,不得不說真的是厲害,就對一個完全沒有程式背景的我能寫出來一個稍微有一點點像樣的東西,真的是很感動~當然也私下問了peter一些問題,至於畫面美感的部分就有待加強了,呵呵~

首先一開始我是先做一個tableViewController作為Menu用,把所有的資訊寫在一個Array裡面再用表格顯示出來,然後才回來做首頁的,讓首頁的Menu連結直接連過去,接下來就是訂飲料的主頁了,用了Segmented還有PickerView,以下是PickerView的寫法,讓使用者選了之後在TextField顯示

//實作PickerView內容func numberOfComponents(in pickerView: UIPickerView) -> Int {return 1}func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {return drinkNameArray.count}func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {return drinkNameArray[row]}//要讓textfield顯示pickerview內容func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {if row == 0{drinkTextField.text = drinkNameArray[0]}else{let selectrow = drinkNameArray[row]drinkTextField.text = selectrow}}

接下來都選完之後的重點就是要如何上傳到google sheet上面,在這邊是利用上課教的如何上傳到sheetDB

let url = URL(string: "https://sheetdb.io/api/v1/***************")var urlRequset = URLRequest(url: url!)urlRequset.httpMethod = "POST"urlRequset.setValue("application/json", forHTTPHeaderField: "Content-Type")let orderdrink = OrderDrink(name: userName, drinkname: drinkName, ice: ice, suger: suger, bubble: bubble, capacity:capacity)let orderdrinkData = OrderDrinkData(data: [orderdrink])let jsonEncoder = JSONEncoder()if let data = try? jsonEncoder.encode(orderdrinkData){URLSession.shared.uploadTask(with: urlRequset, from: data) { (retData, res, err) inlet decoder = JSONDecoder()if let retData = retData, let dic = try? decoder.decode([String:Int].self, from: retData), dic["created"] == 1{
...

另外額外加了alertController在檢查姓名與訂購完成的時候顯示

接下來就是在下一個tab顯示出訂購人員的清單,這部分卡的比較久一點,原本一開始的程式都寫在viewDidLoad裡面,但發現點完飲料之後列表不會自己更新,一問之下才知道要寫在viewWillAppear,讓每次點到畫面的時候都會再跑一次程式,以便更新內容,在這頁就要寫從sheetDB下載的程式

override func viewWillAppear(_ animated: Bool) {let urlAddress = "https://sheetdb.io/api/v1/************"if let url = URL(string: urlAddress){URLSession.shared.dataTask(with: url) { (data, response, error) inif let data = data, let drinkResults = try? JSONDecoder().decode([OrderDrink].self, from: data) {self.orderDrinkArray = drinkResults}DispatchQueue.main.async {self.tableView.reloadData()}}}.resume()}}

目前大致上就做到這邊,之後有時間再陸續修改囉~

--

--