初期画面のページング表示でページ数を動的に変えてみよう!

  • 16
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

この記事は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_mynavi.jpeg
開発のプロが教える Swift標準ガイドブック

この本は、Swiftの文法に始まり、Optional型の説明、UIKit・Foundationの利用やObjective-CからSwiftへの移行など盛りだくさんで、実践で使えることをテーマに詰め込みました!

WatchKitアプリを作る際には、ついでにSwiftにもチャレンジする良いきっかけかなと思います。是非一度手にとっていただきたいと思います。

12月25日発売なので来週木曜日、クリスマス発売です!

クリスマスに 開発のプロが教える Swift標準ガイドブック をどうぞよろしくお願いします!

この投稿は WatchKit Advent Calendar 201417日目の記事です。