Objective
製作豆漿時,豆子與水的比例相當重要,此範例提供方便計算,而無需人為的換算UI
事實上,此 UI 僅提供簡單設計,重點在強調功能面。有關各 UI Component 日後再調整。Code
//
// ViewController.swift
// FoodRecipeUnit
//
// Created by Elvis Meng on 2017/5/8.
// Copyright © 2017年 Elvis Meng. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var soyBeanUnit = ["公克","兩"]
var waterUnit = ["瓢","升"]
var sugarUnit = ["公克","兩"]
var brixUnit = ["微甜","甜"]
var soyBeanUnitSelected = "公克"
var waterUnitSelected = "瓢"
var sugarUnitSelected = "公克"
var brixUnitSelected = "微甜"
var soyBeanAmount = 0.0
var waterAmount = 0.0
var sugarAmount = 0.0
@IBOutlet weak var soyBeanWeight: UITextField!
@IBOutlet weak var waterWeight: UITextField!
@IBOutlet weak var sugarWeight: UITextField!
@IBAction func soyBeanEditOnExit(_ sender: UITextField) {
if soyBeanUnitSelected == "兩" {
soyBeanAmount = 600.0 * Double(soyBeanWeight.text!)!
} else {
soyBeanAmount = Double(soyBeanWeight.text!)!
}
if waterUnitSelected == "瓢" {
waterWeight.text = String(soyBeanAmount * 7.0 / 1500.0)
} else {
waterWeight.text = String(soyBeanAmount * 7.0 * 2500 / 1500.0)
}
}
@IBAction func waterEditOnExit(_ sender: UITextField) {
if waterUnitSelected == "瓢" {
waterAmount = 2500.0 * Double(waterWeight.text!)!
} else {
waterAmount = Double(waterWeight.text!)!
}
if soyBeanUnitSelected == "兩" {
soyBeanWeight.text = String(waterAmount * 2.5 / (7.0 * 2500.0))
} else {
soyBeanWeight.text = String(waterAmount * 2.5 / (7.0 * 2500.0) * 600.0)
}
}
@IBAction func calcBtn(_ sender: UIButton) {
soyBeanWeight.text = nil
waterWeight.text = nil
sugarWeight.text = nil
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch pickerView.tag {
case 0:
return soyBeanUnit.count
case 1:
return waterUnit.count
case 2:
return sugarUnit.count
case 3:
return brixUnit.count
default:
return 0
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch pickerView.tag {
case 0:
soyBeanUnitSelected = soyBeanUnit[row]
return soyBeanUnit[row]
case 1:
waterUnitSelected = waterUnit[row]
return waterUnit[row]
case 2:
sugarUnitSelected = sugarUnit[row]
return sugarUnit[row]
case 3:
brixUnitSelected = brixUnit[row]
return brixUnit[row]
default:
return "error"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Test
Summary
1. 此範例不實作糖與甜度,此部分可留待日後實作2. 在 textField 中,輸入資料,按下 enter,會啟動 EditingOnExit 事件,可自動帶出換算結果,而 UI 可省去 Calculate 這個 Button
Reference
1. UITextField, https://developer.apple.com/reference/uikit/uitextfield2. UIViewController, https://developer.apple.com/reference/uikit/uiviewcontroller
/end