ベルマークのない自由帳

ベルマークのない自由帳

有益と無益の境界例

iOSアプリ開発メモ No.16 -Page Controllの使い方-

ページを捲るようにラベルのテキストが切り替わるのに連動して、今が何個目か可視化したい。

方法

View ControllerPage Controlをにゅっと持ってきます。 そうすると驚きの白さのPage Controlが現れますが、これは初期設定で丸の色が白になっているせいです。

f:id:Mantra:20180223201021p:plain

Page Controlを選択してAttributes Inspectorを開き、Tint Color(非アクティブ時の丸の色)とCurrent Page(アクティブ時の丸の色)を設定します。 ここで注意しておきたいのが、Pages# of Pagesという項目はページ数(丸の数)ですが0からカウントしています。 3 of Pagesとしたら0,1,2の3ページということです。 (私は1からだと勘違いしてつまずきました…)

f:id:Mantra:20180223201322p:plain

Buttonを押したとき、Labelの内容が変化するのと同時にPage Controlを次のページにしたいので、LabelButtonを追加します。 ViewController.swiftConnectします。 LabelPage ControlOutletとして適当な名前をつけて、ButtonActionとしてそれっぽい名前をつけておきます。

f:id:Mantra:20180223201403p:plain

ページ数を指定する変数(pageNumber)を宣言・初期化して、Buttonを押したときのAction(toNext)を書きます。 押すたびにページ数を+1して、if文の中で値に応じてラベル(textLabel)の内容を変化させます。 Actionの最後(if文の外)で、.currentPageメソッドを使ってPage Control(pageState)のページを指定して完了。

f:id:Mantra:20180223201452p:plain

@IBAction func toNext(_ sender: Any) {
    pageNumber += 1
    if(pageNumber == 1){
        textLabel.text = "2ページ目"
    }else if(pageNumber == 2){
        textLabel.text = "3ページ目"
    }else{
        textLabel.text = "もうないよ"
    }
    pageState.currentPage = pageNumber
}

これで「Buttonを押す→Labelの内容が変化する→Page Controlのページが変化する」という一連の流れが実装できました。 あとはif文いじるなりLabel以外のパーツと連動させるなり、お好きにどうぞ。

StateEnabledにチェックを入れるとPage Control自体をタップしてページの切り替えが可能になります。

f:id:Mantra:20180223201549p:plain

参考にしたページ。 http://hajihaji-lemon.com/smartphone/swift/page-control/