XCode 26.6 日本語化計画
元のドキュメント: developer.apple.com/documentation/watchkit/wkinterfacecontroller
watchOS アプリのインターフェースを管理するためのインフラストラクチャを提供するクラス。
@MainActor class WKInterfaceController
インターフェイスコントローラは、実際のビューを管理しない点を除けば、UIKit アプリにおける UIViewController オブジェクトと同様の役割を果たします。これは WatchKit 拡張機能内で動作し、Watch アプリのストーリーボードファイル内のインターフェイスコントローラに関連した動作をリモートで管理します。WKInterfaceController をサブクラス化し、そのメソッドを使用してストーリーボードシーンの要素を構成したり、それらの要素に対する操作に応答したりします。
あなたのインターフェイスコントローラのコードはユーザーの Apple Watch 上でローカルに実行されますが、そのコードが管理するインターフェイスとは分離されています。コード内でインターフェイスオブジェクトの値を変更すると、システムは必要な情報をあなたの Watch アプリに転送し、アプリが画面上でそれに応じた変更を行います。
ユーザーがアプリのコンテンツを操作すると、システムはあなたの拡張機能を起動し、適切なインターフェイスコントローラオブジェクトを自動的に作成します。アプリは、通知用とアプリインターフェイスを管理するためにそれぞれ異なるインターフェイスコントローラを使用しますが、WatchKit はアプリのメインストーリーボードファイル内の情報に基づいて、どのインターフェイスコントローラをロードするかを決定します。通知シーンは、システムがそれらを識別できるように特別に構成されています。あなたのアプリの場合、WatchKit は起動時にアプリのメインインターフェイスコントローラを読み込みますが、起動時に初期インターフェイスコントローラに変更することも可能です。
インターフェイスコントローラを作成する際、WatchKit はそのクラスをインスタンス化し、init() メソッドを呼び出します。このメソッドは、変数の初期化やデータのロードには使用できますが、ユーザーインターフェイスの構成には使用しないでください。このメソッドが実行される時点では、コントローラのユーザーインターフェイス要素が適切に初期化されていない可能性があるためです。
次に、システムは awake(withContext:) メソッドを呼び出します。WatchKit が awake(withContext:) メソッドに有効なオブジェクトが渡された場合は、そのオブジェクトの情報を使用して初期化処理をカスタマイズしてください。また、この時点ではコントローラのユーザーインターフェイス要素が利用可能であることが保証されています。つまり、このメソッド内で安全にユーザーインターフェイスを構成できるということです。
willActivate() メソッドは、インターフェイスがアクティブになろうとしているタイミングを通知します。コンテンツの更新確認など、直前に行うべき処理には willActivate() メソッドを使用しますが、主要な初期化処理には使用しないでください。
willActivate() メソッドは、インターフェイスがまだ画面に表示されていないタイミングで呼び出されることがあります。例えば、コンテンツを更新する時間を確保するために、WatchKit が事前にこのメソッドを呼び出す場合があります。WatchKit はインターフェイスが表示状態になったことを、didAppear() メソッドの呼び出しによって通知します。同様に、WatchKit は、インターフェイスが再び画面から消える際には、willDisappear() および didDeactivate() メソッドを呼び出します。
iOS シミュレータでは、Hardware > Lock を選択してシミュレータをロックすると、WatchKit は現在のインターフェイスコントローラの didDeactivate() メソッドを呼び出します。その後シミュレータのロックを解除すると、WatchKit はそのインターフェイスコントローラの willActivate() メソッドを再び呼び出します。この機能を利用して、アクティベーションおよびディアクティベーションのコードをデバッグすることができます。
Xcode では、ストーリーボードファイル内でインターフェイスコントローラに関する情報を構成できます。以下の表は、ストーリーボード内で構成可能な属性とその意味をまとめたものです。
| 属性 | 説明 |
| Identifier (ID) | インターフェイスコントローラの名前。プッシュまたは表示すべきインターフェイスコントローラを指定する際に、この名前を使用します。 |
| Title (タイトル) | インターフェイスコントローラに割り当てられるタイトル文字列。setTitle(_:) メソッドを使用して、プログラムからこの値を設定できます。 |
| Is Initial Controller(初期コントローラである) | このオブジェクトがアプリのルートインターフェイスコントローラであるかどうかを示すブール値です。このオプションを有効にできるのは、一度に1つのインターフェイスコントローラのみです。このオプションは、Glance(グランス)や通知のインターフェイスコントローラには適用されません。 |
| Activity Indicator On Load(ロード中の活性インジケータ) | willActivate() メソッドが戻るまで、インターフェイスコントローラのコンテンツを非表示にするかどうかを示すブール値です。このオプションを有効にすると、willActivate() メソッドが戻るまで、システムは進行状況インジケータを表示します。すぐに表示可能な静的な情報がインターフェイスの大部分を占める場合は、このオプションを無効にしてもよいでしょう。 |
| Always Bounce(常にバウンス) | スクロールを無効にし、コンテンツのセーフエリアに関係なく、組み込みのコントロールやコンテナが画面の端までコンテンツを表示できるようにするブール値です。 |
| Full Screen(フルスクリーン) | SpriteKit または SceneKit のコンテンツが画面全体を使用できるかどうかを決定するブール値です。システムはステータスバーを非表示にしますが、画面の右上隅に時刻を表示し、その背後にグラデーションを配置することで、シーンに対して時刻をはっきりと視認できるようにします。 |
| Fixed to screen edges(画面の端に固定) | コンテンツがセーフエリアや最小レイアウトマージンを無視するかどうかを示すブール値です。このオプションを有効にすると、システムはスクロールを無効にし、組み込みのコントロールやコンテナが画面の端までコンテンツを表示できるようにします。 |
| Background(背景) | シーンのコンテンツの背面に表示される背景画像です。ストーリーボードで指定した画像は、インターフェイスコントローラのコンテンツと共にスクロールします。 |
| Mode(モード) | 背景画像のコンテンツモードです。このモードは、背景画像をどのように拡大・縮小するか、あるいは画面全体をどのように埋めるかを定義するもので、UIView.ContentMode 型の定数と同様に動作します。 |
| Animate(アニメーション) | アニメーション付きの背景画像が、ロードの後に自動的にアニメーションを開始するかどうかを示すブール値です。アニメーションを自動的に開始させたい場合はこのオプションを Yes に設定し、プログラムから開始させたい場合は No に設定します。 |
| Color (カラー) | シーンのコンテンツの背面に表示される背景色。 |
| Insets (挿入物) | インターフェイスコントローラの端とそのコンテンツとの間に設ける余白の量(ポイント単位)。Custom を選択すると、上下左右の端それぞれに異なる値を指定できます。 |
| Spacing (余白) | インターフェイスコントローラ内の項目間に設ける追加の余白(ポイント単位)。 |
実行時に構成が必要なストーリーボードシーンや、ユーザー操作を処理するシーンがある場合は、WKInterfaceController をサブクラス化します。通常、あなたのアプリが管理する各ストーリーボードシーンごとにカスタムサブクラスを定義して下さい。サブクラスでは、構成が必要なインターフェイスオブジェクトのアウトレットを定義し、ストーリーボードシーンの要素の操作に応答するアクションメソッドを定義します。
アプリで使用するほとんどのカスタムインターフェイスコントローラは、カスタムインターフェイスコントローラのサブクラスを必要とします。一見でさえ、一見の内容を更新するためにインターフェイスコントローラが必要です。カスタムインターフェイスコントローラを使用できない唯一のストーリーボードシーンは、静的通知インターフェイスに関連したシーンです。動的通知インターフェイスのインターフェイスコントローラを実装する場合は、代わりに WKUserNotificationInterfaceController をサブクラス化してください。
インターフェースの構成と表示準備に必要なクラスのメソッドをオーバーライドしてください。ほとんどのインターフェースコントローラは、init() メソッドと awake(withContext:) メソッドをオーバーライドします。必要に応じて、その他のメソッドもオーバーライドしてください。
初期化されたインターフェイスコントローラオブジェクトを返します。
指定されたコンテキストデータを使用して、インターフェイスコントローラを初期化します。
インターフェースのタイトルを設定します。
システムがビューをアクティブにしようとしていることを、インターフェイスコントローラに通知します。
インターフェイスコントローラに対し、そのビューがもはやアクティブではないことを通知します。
インターフェイスコントローラに対し、そのビューが画面上に表示されたことを通知します。
インターフェイスコントローラに対し、そのビューが画面外になったことを通知します。
func pushController(withName: String, context: Any?)
新しいインターフェースコントローラを画面上にプッシュします。
現在のインターフェースコントローラを画面からポップします。
アプリの初期インターフェースコントローラを除く、すべてのインターフェースコントローラをポップします。
指定された行に対してセグエを実行します。
func presentController(withName: String, context: Any?)
単一のインターフェースコントローラをモーダルで表示します。
func presentController(withNames: [String], contexts: [Any]?)
ページを基本としたインターフェイスをモーダルで表示します。
func presentController(withNamesAndContexts: [(name: String, context: AnyObject)])
ページを基本としたインターフェイスをモーダルで表示します。
現在のインターフェースコントローラ上に、アラートまたはアクションシートを表示します。
標準システムアラートのスタイルを示す定数。
現在のインターフェースコントローラを画面から閉じます。
指定されたインターフェイスコントローラをロードし、与えられたスクロール方向に合わせてアプリのページを基礎としたインターフェイスを再構築します。
ページを基礎としたインターフェースにおけるスクロール方向。
class func reloadRootControllers(withNamesAndContexts: [(name: String, context: AnyObject)])
指定されたインターフェイスコントローラをロードし、アプリのページを基礎としたインターフェイスを再構築します。
ページを基礎としたインターフェイスで、インターフェイスコントローラーを表示します。
func contextForSegue(withIdentifier: String) -> Any?
ボタンがタップされたときに、指定されたインターフェイスコントローラに渡すべきコンテキストオブジェクトを返します。
func contextsForSegue(withIdentifier: String) -> [Any]?
ボタンがタップされた際に、ページを基礎としたインターフェースコントローラーのセットへ渡すべきコンテキストオブジェクトを返します。
func contextForSegue(withIdentifier: String, in: WKInterfaceTable, rowIndex: Int) -> Any?
表内の行がタップされた際に、指定されたインターフェイスコントローラに渡すべきコンテキストオブジェクトを返します。
func contextsForSegue(withIdentifier: String, in: WKInterfaceTable, rowIndex: Int) -> [Any]?
表内の行がタップされたときにページを基礎としたインターフェイスコントローラーのセットに渡すべきコンテキストオブジェクトを返します。
func scroll(to: WKInterfaceObject, at: WKInterfaceScrollPosition, animated: Bool)
指定されたオブジェクトを、画面上の与えられた位置までスクロールします。
enum WKInterfaceScrollPosition
画面上のスクロール位置。
func interfaceDidScrollToTop()
ユーザーが「トップへスクロール」するジェスチャ(ステータスバーのタップなど)を行い、スクロールのアニメーションが完了したことをインターフェースコントローラに通知します。
func interfaceOffsetDidScrollToTop()
ユーザーがインターフェースの最上部までスクロールし、スクロールのアニメーションが完了したことをインターフェースコントローラーに通知します。
func interfaceOffsetDidScrollToBottom()
ユーザーがインターフェースの最下部までスクロールし、スクロールのアニメーションが完了したことをインターフェースコントローラーに通知します。
var isTableScrollingHapticFeedbackEnabled: Bool
ユーザーが表をスクロールする際、新しい行の表示に合わせて触覚のフィードバックを行うかどうかを決定するブール値。
var contentSafeAreaInsets: UIEdgeInsets
画面上でコンテンツを安全に表示できる領域を定義する挿入物。
var systemMinimumLayoutMargins: NSDirectionalEdgeInsets
テキスト要素の最小レイアウトの余白を表す、先頭および末尾の挿入物。
アプリのコンテンツを表示するために使用されるフレームの長方形。
func animate(withDuration: TimeInterval, animations: () -> Void)
指定された期間にわたり、1 つ以上のインターフェイスオブジェクトの変更をアニメーション化します。
ユーザーからテキスト入力収集するためのモーダルインターフェースを表示します。
ユーザーから言語固有のテキスト入力を収集するためのモーダルインターフェースを表示します。
func dismissTextInputController()
テキストを返さずに、テキスト入力コントローラーを閉じます。
テキスト入力コントローラーによってサポートされる入力モード。
指定されたメディアファイルを再生するためのモーダルインターフェースを表示します。
メディア再生オプションを示すキー。
func dismissMediaPlayerController()
メディアインターフェースコントローラーを閉じます。
ユーザーの Apple Watch から音声を録音するための標準インターフェイスを表示します。
音声録音の品質を示す定数。
音声を録音する際に指定すべきオプション。
func dismissAudioRecorderController()
音声録音インターフェースコントローラーを閉じます。
func table(WKInterfaceTable, didSelectRowAt: Int)
ユーザーが表内の行を選択したことを通知するために呼び出されます。
func pickerDidFocus(WKInterfacePicker)
指定されたピッカーが、Digital Crown からの入力を受け付けるようになったことを通知するために呼び出されます。
func pickerDidResignFocus(WKInterfacePicker)
指定されたピッカーが、Digital Crown からの入力を受け付けなくなったことを通知するために呼び出されます。
func pickerDidSettle(WKInterfacePicker)
ユーザーがピッカーで値を確定した際に呼び出されます。
NSObjectProtocol
class WKInterfaceGroup
1 つ以上のインターフェースオブジェクトを格納するコンテナ。
class WKInterfaceSeparator
グループ内に視覚的な区切り線を表示するインターフェイスオブジェクト。
class WKInterfacePicker
ユーザーが選択できる項目のスクロールリストを表示するインターフェース要素。