Weitere ähnliche Inhalte
Ähnlich wie Swift bondでつなげてプログラミング (20)
Swift bondでつなげてプログラミング
- 6. class ViewController: UIViewController,
UITextFieldDelegate {
@IBOutlet var textfield : UITextField
@IBOutlet var label : UILabel
override func viewDidLoad() {
super.viewDidLoad()
self.textfield.addTarget(self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged)
}
func textFieldDidChange(id:sender) {
self.label.text = self.textfield.text
}
}
class ViewController: UIViewController {
@IBOutlet var textfield : UITextField
@IBOutlet var label : UILabel
override func viewDidLoad() {
super.viewDidLoad()
self.textfield ->> self.label
}
}
普通に実現する場合は、
textfieldの状態を監視する処理を入れる必要がある
- 8. mapは何を返しても良い
let nameValid = name.dynText.map{countelements($0) > 6}
let passValid = pass.dynText.map{countelements($0) > 6}
loginButton.dynEnabled
= reduce(nameValid, passValid){$0 && $1}
reduce(name.dynText, pass.dynText) {
return countElements($0) > 6 && countElements($1) > 6
} ->> loginButton.dynEnabled
- 11. Dynamic型で使える関数型言語機能
func map<T, U>(dynamic: Dynamic<T>, f: T -> U) -> Dynamic<U>
Dynamic(配列)型を関数を使い他の Dynamicに変換する
func filter<T>(dynamic: Dynamic<T>, f: T -> Bool) -> Dynamic<T>
Dynamic(配列)型を関数を使い条件に一致するものだけ取り出す
func reduce<A, B, T>(dA: Dynamic<A>, dB: Dynamic<B>, f: (A, B) -> T) -> Dynamic<T>
Dynamic(配列)型を関数を使い一つの Dynamic型に集約する
- 13. TableにはUtilityクラス
self.tableViewDataSourceBond = UITableViewDataSourceBond(tableView: self.tableView)
self.news = DynamicArray([])
….
self.news.map { (entry: AnyObject) -> UITableViewCell in
let result:NSDictionary = entry as NSDictionary
let cell = (self.tableView.dequeueReusableCellWithIdentifier("cell") as? ListViewCell)!
let title:Dynamic<String> = Dynamic(result["title"] as String)
title ->> cell.label
return cell
} ->> self.tableViewDataSourceBond
cellForRowAtIndexPathとか
numbersOfRowinSectionとか必要なし!
Tableの状態を気にせず処理を書ける
- 15. どうやって実装してるの?
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
println("Step (newTotalSteps) が追加されます! ")
}
didSet {
println(" (oldValue) Stepが変更されました! )
println("今は (totalSteps)")
}
}
}
propertyObsever 使ってます!