XCode 12.4 日本語化計画:Swift Tutorials
UIKit とのインターフェース
セクション 3
カスタムの UIPageControl を追加する準備をするには、PageView 内から現在のページを追跡する方法が必要です。
これを行うには、PageView 内で @State プロパティを宣言し、このプロパティへの拘束を PageViewController ビューに渡します。PageViewController は、表示されているページに一致するように拘束を更新します。
ステップ 1
まず、currentPage 拘束 (binding) を PageViewController のプロパティとして追加します。
@Binding プロパティの宣言に加えて、setViewControllers(_:direction:animated:) への呼び出しをも更新し、currentPage 拘束の値を渡します。
ステップ 2
PageView 内に @State 変数を宣言し、子の PageViewController を作成するときにプロパティへの結束を渡します。
重要
$ 構文を使用して、状態 (state) として格納される値への結束を作成することを忘れないでください。
ステップ 3
その初期値を変更して、値が PageViewController への結束を通過することをテストしてみましょう。
実験
ページビューコントローラを 2 番目のビューに飛ばさせるボタンを PageView に追加します。
ステップ 4
currentPage プロパティを使用してテキストビューを追加し、@State プロパティの値を監視できるようにします。
ページからページとスワイプしても、値は変わらないことに注意してください。
ステップ 5
PageViewController.swift 内で、コーディネータを UIPageViewControllerDelegate に準拠させ、 pageViewController(_:didFinishAnimating:
previousViewControllers:transitionCompleted complete:Bool) メソッドを追加します。
SwiftUI は、ページ切り替えアニメーションが完了するたびにこのメソッドを呼び出すため、現在のビューコントローラのインデックスを見つけて、拘束を更新できます。
ステップ 6
データソースに加えて、UIPageViewController のデリゲートとしてコーディネータを割り当てます。
拘束 (binding) が両方向に接続されているので、テキストビューが更新され、スワイプするたびに正しいページ番号が表示されます。
    PageViewController.swift
    PageView.swift
    PageView.swift
    PageView.swift
    PageViewController.swift
    PageViewController.swift
セクション 1 | セクション 2 |
セクション 3 | セクション 4 |
セクション 101 | セクション 102 |
セクション 103 | セクション 104 |