Hello, watchOS – 연습

설치 및 설치의 단계에 따라 솔루션을 만든 후에는 3개의 프로젝트가 있습니다.

  • 설정 또는 기타 디바이스 내 관리 작업에 사용되는 iOS 부모 앱입니다. (다른 유형의 iOS 확장에서는 "컨테이너" 앱이라고도 합니다.) Watch Apps를 사용하면 사용자가 부모 앱을 실행하지 않고 Watch 앱을 실행하기 시작할 수 있습니다.
  • 조사식 앱에 대한 프로그램 코드가 포함된 조사식 확장 및
  • 시계에 렌더링되는 스토리보드 및 이미지 리소스를 보관하는 Watch 앱입니다.

참조가 올바른지 확인합니다. 부모 앱에 Watch 앱에 대한 참조가 있고 Watch 앱에 확장에 대한 참조가 있는지 확인합니다.

번들 식별자가 *.watchkitextension *.watchkitapp 규칙을 따르고 확장의 Info.plist 파일에 WKApp 번들 ID 값이 Watch 앱의 번들 식별자로 설정되어 있음을 확인합니다.

이제 Watch 앱을 실행할 수 있지만 Watch 앱 내의 스토리보드 파일이 비어 있으므로 알 수 없습니다.

Watch 앱에서 Interface.storyboard를 두 번 클릭하여 Xamarin iOS 디자이너를 시작합니다(Mac에 있는 경우 마우스 오른쪽 단추를 클릭하고 Xcode 인터페이스 작성기를 사용하여 열 > 수도 있습니다).

  1. 도구 상자속성 패드가 표시되는지 확인합니다.

  2. 클릭하여 인터페이스 컨트롤러를 선택합니다.

  3. 인터페이스 컨트롤러의 식별자 및 제목을 interfaceControllerHi Watch설정합니다.

  4. 클래스InterfaceController로 설정되어 있는지 확인합니다.

    Set the Identifier and Title of the Interface Controller to interfaceController and Hi Watch

UI를 만듭니다.

  1. 도구 상자 패드에서
  2. 단추레이블장면으로 끌어서 놓습니다.
  3. 다음과 같이 컨트롤의 텍스트 및 특성을 설정합니다.
  1. 각 컨트롤의 속성 패드에서 이름을 설정합니다. 이 예제에서는 사용 myButton 했습니다.myLabel

  2. 스토리보드에서 단추를 선택하고 속성 패드의 이벤트 목록으로 이동한 다음

  3. Enter 키를 입력 OnButtonPress 하고 눌러 작업을 만듭니다. 작업이 목록에 표시되고 부분 메서드가 C#에서 자동으로 만들어집니다.

The OnButtonPress Action added to a button

스토리보드 를 저장하면 InterfaceController.designer.cs 컨트롤 이름 및 작업으로 업데이트됩니다. 업데이트된 후 이 파일을 열면 컨트롤러에 해당하는 방법 RegisterAttribute 및 UI 컨트롤이 표시된 C# 인스턴스 변수에 어떻게 해당하는지, 그리고 Actions가 다음과 같이 OutletAttributeActionAttribute태그가 지정된 부분 메서드에 매핑되는 방법을 확인할 수 있습니다.

// WARNING
//
// This file has been generated automatically by Visual Studio for Mac from the outlets and
// actions declared in your storyboard file.
// Manual changes to this file will not be maintained.
//
[Register ("InterfaceController")]
partial class InterfaceController
{
    [Outlet]
    [GeneratedCode ("iOS Designer", "1.0")]
    WatchKit.WKInterfaceButton myButton { get; set; }

    [Outlet]
    [GeneratedCode ("iOS Designer", "1.0")]
    WatchKit.WKInterfaceLabel myLabel { get; set; }

    [Action ("OnButtonPress:")]
    [GeneratedCode ("iOS Designer", "1.0")]
    partial void OnButtonPress (WatchKit.WKInterfaceButton sender);

    void ReleaseDesignerOutlets ()
    {
        if (myButton != null) {
            myButton.Dispose ();
            myButton = null;
        }
        if (myLabel != null) {
            myLabel.Dispose ();
            myLabel = null;
        }
    }
}

이제 InterfaceController.cs 열고(InterfaceController.designer.cs 아님) 다음 코드를 추가합니다.

int clickCount = 0;
partial void OnButtonPress (WatchKit.WKInterfaceButton sender)
{
  var msg = String.Format("Clicked {0} times", ++clickCount);
  myLabel.SetText(msg);
}

이 코드는 상당히 투명해야 합니다. 함수 OnButtonPress 가 호출될 때마다 인스턴스 변수 clickCount 가 증가합니다. 텍스트 myLabel 는 이 개수를 myLabel반영하도록 변경됩니다. 물론 XCode에서 만든 출선 중 하나의 이름입니다. 함수는 partial 지정한 Action의 이름과 연결된 함수의 구현입니다.

아직 시작 프로젝트가 아닌 경우

  1. 조사식 확장 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택합니다.

  2. 배포 대상을 Watch Kit 호환 시뮬레이터 이미지(예: i전화 6 iOS 8.2)로 설정합니다.

  3. 디버그 단추를 눌러 빌드 및 시뮬레이터 시작을 트리거합니다.

    The Visual Studio interface elements

시뮬레이터가 시작되면 단추를 눌러 레이블을 증가합니다. 축하합니다, 당신은 자신에게 시계 응용 프로그램을 가지고있다!

The app running in the Simulator