掘ってもなにも出てこなさそうなところ:iOS画面遷移の分岐

iOSで、ある画面から条件によって(ユーザの種類とか)別の画面に遷移させたくて、きれいに書ける方法ないかと思って考えたり探したりしてもなかなかいい方法ない。

そもそもsegueでやる方法の何が不満かというと、条件分岐で別画面に遷移させた場合って、遷移先の画面も管理下に置きたいという気持ちがある。(せっかく別画面に遷移させたのに同じ画面に合流しないようにロジック組みたいとか)

でもこれって複数画面にまたがる知識になってしまうので、よくない。

なので、segueを使うんだけど、その上でsegueでつないだ一連の画面をきれいに管理する方法ないかって考えてみた。

綺麗に管理する方法とか、ベストプラクティスとか考えるときに真っ先に思いつくのがデザインパターンとか、オブジェクト指向のベストプラクティスだとおもう。

けれど、segueでつないだ一連の画面って、各々の画面はクラス(ViewController)なんだけど、それ自体は全体としてクラスではない。

オブジェクト指向のベストプラクティスとかデザインパターンは、オブジェクト指向言語でクラスを書くときに、その関係性や書き方について語っているので、クラスではないこの一連の画面には全く適用できないことを思い知らされた。

 

なので、結論としては遷移先画面を分けたいときは

①同じViewControllerのなかで複数のviewを出したり消したりで遷移させて、条件分岐させて、1つのクラス内なので心置きなく全体を管理する

②とくになにも考えずにsegueつかって条件分岐させて、問題が出たらまた考える

オブジェクト指向的な武器が使えないところでいろいろいい方法考えていろんなところ掘ってみてもなにも出てこないと思うので、美しいとはいえないけれど、iOSが標準で用意してくれているsegueなどの画面遷移を素直に使って、問題があればその都度考えるということでいいと思う。