14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-12-17

この記事は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標準ガイドブック をどうぞよろしくお願いします!

14
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?