prettyprint

2017年5月9日 星期二

範例:豆漿食譜

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/uitextfield
2. UIViewController, https://developer.apple.com/reference/uikit/uiviewcontroller




/end

沒有留言:

張貼留言

prettyPrint();