この記事はWatchKit Advent Calendar 17日目の記事です。
WatchKitアプリでは、写真アプリのように、横にスワイプして一つづつ画面を表示するページング表示が作れます。
初期画面でページングする
NDAの関係でスクリーンショットを用いて説明できないのが心苦しいですが、
Watch Appのストーリーボードでも、iOSアプリのストーリーボードと同様cmd+ドラッグアンドドロップで
InterfaceController同士をSegueを繋げられます!
ボタンなどのタッチUIからSegueを引くとPush or Modalの遷移がヒントとして出てきますが、
それ以外の部分でSegueをつなぐとNext Pageというヒントが出てきます。
これを選択することで、初期画面でページングUIが作れます。
3ページ以上にしたい場合はNext Pageで繋がった最後のInterfaceControllerから更に別のInterfaceControllerへNext Page Segueをつなぐだけです。
初期画面のページ数を動的に変える
このようにストーリーボードで、初期画面のページングUIを作ることはできるのですが、beta1ではこの数を後から動的に変更できませんでした。
beta2で新たにWKInterfaceController.reloadRootControllersWithNames(names:contenxts:)
クラスメソッドが追加され、ついに初期画面でも動的にページ数を変更できるようになりました。
使い方はpresentControllerWithNames(names:contexts:)
メソッドとほぼ同じです。
ストーリーボードでInterfaceControllerにIdentifierを設定しておき、第一引数のnamesでそのidentifierの配列を表示する要素数分指定します。第二引数にはそれぞれに渡したいcontextをnamesと同じ要素数の配列で渡します。
すると初期画面がリロードされ、指定した分のページが表示されます。
このreloadRootControllersWithNames
メソッドで要素を1つだけ指定しても、表示の最下部にページングコントロール(白い丸)が表示されるので、このメソッドを呼ぶと強制的にページングUIになるようです。
徐々にやれることは増えてる?
beta1からbeta2にかけて、本体アプリと連携する機能が増えたりと、少しずつですが改善されています。
正式リリースまで、どこまでbetaが進むのかわかりませんが、最終的にWatchKitはどのようなものになるのでしょうか。
引き続き追っていきたいと思います。
P.S.
誠に恐縮ながら、この度縁がありまして、Swiftの本を執筆させていただきました!
この本は、Swiftの文法に始まり、Optional型の説明、UIKit・Foundationの利用やObjective-CからSwiftへの移行など盛りだくさんで、実践で使えることをテーマに詰め込みました!
WatchKitアプリを作る際には、ついでにSwiftにもチャレンジする良いきっかけかなと思います。是非一度手にとっていただきたいと思います。
12月25日発売なので来週木曜日、クリスマス発売です!
クリスマスに 開発のプロが教える Swift標準ガイドブック をどうぞよろしくお願いします!