Swiftを使って、入力フォームで入力金額から手数料を引いた額を自動算出して表示させる機能を実装。
イメージとしてはメルカリの出品画面のように、売値を入力すると、手数料を引いた売上額が自動で算出&表示される機能。
今回は入力フォームライブラリ「Eureka」を使用。
Eurekaを導入
Eurekaの導入は以下の記事を参照してください。
導入が終わったらswiftファイルでimportします。
import Eureka
入力フォームで入力金額から手数料を引いた額を自動算出して表示
次にフォームのコードをviewDidLoad内に入力します。
class ViewController : FormViewController{
var profit : Int?
override func viewDidLoad() {
super.viewDidLoad()
form
+++ Section("金額")
<<< IntRow(){ row in
row.title = "金額"
row.value = 0
self.profit = row.value ?? 0
}.onChange({ [unowned self] row in
self.profit = row.value ?? 0
let real = Int(round(Double(self.profit ?? 0) * 0.9) - 300)
let PrefRow = form.rowBy(tag: "real_profit") as! LabelRow
PrefRow.value = String(real)
PrefRow.reload()
})
<<< LabelRow(){ row in
row.tag = "real_profit"
row.title = "手数料を引いた金額"
let real = Int(round(Double(self.profit ?? 0) * 0.9) - 300)
row.value = String(real)
}
}
}
IntRowとLabelRowを用意し、IntRowが変更されるごとにonChangeが呼び出され、LabelRowの表示内容に反映させる仕組み。
onChange内でLabelRowのtagを呼び出し、valueを変更し、reloadしている。
また今回計算している手数料は入力金額の1割から300円引いた額。
round関数を用いて少数第1位を四捨五入し、整数になるように表示しています。
Swiftのお役立ち情報