元のドキュメント: developer.apple.com/documentation/watchkit/connecting-your-user-interface-to-your-code


記事


ユーザーインターフェースとあなたのコードを接続する


ストーリーボード内のインターフェースオブジェクトを、WatchKit 拡張機能内のアウトレットおよびアクションメソッドに接続します。





概観


WatchKit 拡張機能内のコードは、WKInterfaceObject サブクラスのインスタンスである インターフェイスオブジェクト を介して、watchOS アプリのユーザーインターフェイスとやり取りします。インターフェイスオブジェクトはビューそのものではなく、watchOS アプリによって表示される実際のビューのプロキシオブジェクトです。WatchKit フレームワークは、ストーリーボードに追加できるほとんどの要素について、対応するインターフェイスオブジェクトを提供しています。


Apple Watch におけるインターフェイスオブジェクトとそれに対応するビューとの間の通信は一方向であり、情報はあなたのコードからビューへと流れます。つまり、インターフェイスオブジェクトに値を設定することはできますが、ビューの現在の値を取得することはできません。現在の値にアクセスする必要がある場合は、その値をコード内でキャッシュしておかなければなりません。



インターフェースオブジェクトの作成


インターフェイスオブジェクトを作成するには、ストーリーボード内のシーンに項目を追加します。次に、アシスタントエディタを開き、ストーリーボード上のその項目をシーンのインターフェイスコントローラへ向かって Control ドラッグします(図1)。



すると、Xcode がアウトレット名の入力を求めます。名前を入力し、[Connect](接続) をクリックします(図2)。



すると Xcode は、そのインターフェイスオブジェクト用のアウトレットを追加し、ストーリーボード内の項目に接続します。


// MARK: - Outlets

@IBOutlet weak var firstButton: WKInterfaceButton!

アウトレットの作成に関する詳細については、UI オブジェクトへのメッセージ送信 を参照してください。


システムがインターフェイスコントローラをロードする際、接続されたすべてのアウトレットに対応するインターフェイスオブジェクトが自動的にインスタンス化され構成されます。あなたがインターフェイスオブジェクトをインスタンス化することは決してありません。ただし、これらのアウトレットを使用して、実行時に項目の属性を変更することは可能です。



インターフェースの構成と更新


Xcode での設計時にインターフェイス要素を構成することも、実行時に接続されたインターフェイスオブジェクトを使用することも可能です。ただし、インターフェイスオブジェクトは、Xcode の Attributes インスペクタで利用可能な属性のうち、一部のみを公開していることがよくあります。


例えば、WKInterfaceLabel クラスは、実行時にテキスト(または属性付きテキスト)やテキストの色を設定するためのメソッドを公開しています。


  • setText(_:)

  • setTextColor(_:)

  • setAttributedText(_:)<

  • 最小スケール、行数、配置といった追加のプロパティは、デザイン時の Attributes inspector(属性インスペクタ)でのみ利用可能です(図3)。



    さらに、あなたのストーリーボードファイルの各シーンには、使用する予定のすべてのインターフェイス要素を含めておかなければなりません。実行時にインターフェイスに項目を追加したり削除したりすることはできませんが、その時点で不要な項目を非表示にすることは可能です。システムは非表示のオブジェクトを、あなたがストーリーボードから削除した場合と同様に扱うため、これにより実質的にそれらの項目をインターフェイスから取り除くことができます。


    実行時に項目を非表示にしたり表示したりするには、その項目の setHidden(_:) メソッドを呼び出します。



    ユーザーの操作に応答する


    ボタン、スライダー、ピッカーなどのコントロールを使用すると、ユーザーはあなたのアプリを操作できます。ユーザーの操作に応答するには、コントロールをシーンのインターフェイスコントローラ内のアクションメソッドに接続しなければなりません。アシスタントエディタでコントロールからインターフェイスコントローラへ Control-ドラッグし、アクションへの接続(Connection to Action)を作成します(図4)。



    名前を入力して「Connect(接続)」をクリックすると、Xcode はインターフェイスコントローラにアクションメソッドを追加し、それをコントロールに接続します。メソッドのシグネチャは、コントロールの種類によって異なります。例えば、ボタンのアクションメソッドは引数をとりませんが、ピッカーのアクションメソッドは、選択された項目のインデックスを表す整数を引数にとります。


        // MARK: - Action Methods
    
        @IBAction func buttonActionMethod() {
        }
    
        @IBAction func switchActionMethod(_ value: Bool) {
        }
    
        @IBAction func sliderActionMethod(_ value: Float) {
        }
    
        @IBAction func pickerActionMethod(_ value: Int) {
        }
    

    ユーザーがコントロールを操作するたびにいつでも、システムは接続されたアクションメソッドを自動的に呼び出し、あなたのアプリがそれに応答できるようにします。詳細については、UI オブジェクトからのメッセージの受信 を参照してください。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ