背景
先日、ScoreBoxという麻雀成績管理アプリを個人開発してリリースしました。
その中の設定画面ではEurekaを使用しています。
Eurekaは非常にお手軽に設定画面を作成できるのでおすすめです。
悩んだ
麻雀というからには4人(または3人)のプレイヤー選択が必要です。
Eurekaでは決まったリストからのマルチ選択機能は標準で用意されていましたが、
今回はリスト表示後も選択できるプレイヤー数をその場で増減させたかったので工夫が必要でした。
工夫した
だったら自分でプレイヤー選択のViewControllerを自作し、
Eurekaから呼び出そうということでやったのがこちら。
呼び出し先のViewControllerの内容は割愛していますが、Controller内でプレイヤーリストの編集が可能になっています。
<<< ButtonRow() {
$0.title = "\(game.playerList.count)人 選択中"
$0.hidden = false
$0.presentationMode = .show(controllerProvider: ControllerProvider<UIViewController>.callback {
return playerListVC
},
onDismiss: { vc in
vc.navigationController?.popViewController(animated: true)
})
}
.cellSetup{ (cell, row) in
cell.imageView?.image = UIImage("アイコン画像")
}
.cellUpdate({ (cell, row) in
cell.textLabel?.text = "\(game.playerList.count)人 選択中"
})
実際の画面
ポイント
$0.presentationMode = .show(controllerProvider: ControllerProvider<UIViewController>.callback {
return playerListVC
},
onDismiss: { vc in
vc.navigationController?.popViewController(animated: true)
})
EurekaのButtonRowがタップされた際に表示する自作のViewControllerを指定し、
.cellUpdate({ (cell, row) in
cell.textLabel?.text = "\(game.playerList.count)人 選択中"
})
自作のViewControllerから戻ってきた場合にButtonRowのキャプションを更新しています。
今後も開発中に工夫した点を残していきたいと思います。(需要が分からないので主に自分への備忘)