方法
非同期処理のコールバック関数内に以下を書く。
self.form.allRows.forEach({$0.updateCell(); $0.reload()})
例
import Eureka
final class ExampleFormViewController: FormViewController {
private var user: User?
...
override func viewDidLoad() {
super.viewDidLoad()
setView()
setForm()
fetchUser()
}
private func setView() {
...
}
private func setForm() {
self.form
+++ Section("User info")
<<< TextRow() { row in
row.title = "Name"
row.placeholder = "hoge fuga"
}.cellUpdate { [unowned self] cell, row in
// フェッチしたuserのnameを代入
row.value = self.user?.name
}
...
}
private func fetchUser() {
let successHandler: (User) -> Void = { user in
self.user = user
// フォームを更新・画面に反映
self.form.allRows.forEach({$0.updateCell(); $0.reload()})
}
UserLogic.get(successHandler: successHandler, failureHandler: {_ in})
}
}
説明
$0.updateCell()
でRow
のcellUpdate
が呼ばれるので、ここでrow.value
を更新する。
$0.reload()
でRow
の変更を画面に反映させる。