다음을 통해 공유


Xamarin에서 watchOS 탐색 작업

시계에서 사용할 수 있는 가장 간단한 탐색 옵션은 현재 장면 위에 나타나는 간단한 모달 팝업 입니다.

다중 장면 감시 앱의 경우 다음 두 가지 탐색 패러다임을 사용할 수 있습니다.

메서드를 PresentController 사용하여 인터페이스 컨트롤러를 모듈식으로 엽니다. 인터페이스 컨트롤러는 Interface.storyboard이미 정의되어 있어야 합니다.

PresentController ("pageController","some context info");

모듈식으로 표시된 컨트롤러는 전체 화면(이전 장면 포함)을 사용합니다. 기본적으로 타이틀은 취소설정되고 탭하면 컨트롤러가 해제됩니다.

프로그래밍 방식으로 제공된 컨트롤러를 닫려면 .를 호출합니다 DismissController.

DismissController();

모달 화면은 단일 장면이거나 페이지 기반 레이아웃을 사용할 수 있습니다.

계층적 탐색

iOS에서 작동하는 방식 UINavigationController 과 유사하게 다시 탐색할 수 있는 스택과 같은 장면을 표시합니다. 장면을 탐색 스택으로 푸시하고 팝오프할 수 있습니다(프로그래밍 방식으로 또는 사용자 선택에 의해).

장면을 탐색 스택으로 푸시할 수 있습니다. 탐색 스택에서 장면을 표시할 수 있습니다.

iOS와 마찬가지로 왼쪽 가장자리 살짝 밀기는 계층적 탐색 스택에서 부모 컨트롤러로 다시 이동합니다.

코드에서 푸시 및 팝

Watch Kit는 iOS처럼 지나치게 아치형 "탐색 컨트롤러"를 만들 필요가 없습니다. 단순히 메서드를 사용하여 PushController 컨트롤러를 푸시하면 탐색 스택이 자동으로 만들어집니다.

PushController("secondPageController","some context info");

시계의 화면에는 왼쪽 위에 뒤로 단추가 포함되지만, 탐색 스택PopController에서 프로그래밍 방식으로 장면을 제거할 수도 있습니다.

PopController();

iOS와 마찬가지로 .PopToRootController

PopToRootController();

Segues 사용

스토리보드의 장면 간에 Segue를 만들어 계층적 탐색을 정의할 수 있습니다. 대상 장면에 대한 컨텍스트를 가져오기 위해 운영 체제는 새 인터페이스 컨트롤러를 초기화하도록 호출 GetContextForSegue 합니다.

public override NSObject GetContextForSegue (string segueIdentifier)
{
  if (segueIdentifier == "mySegue") {
    return new NSString("some context info");
  }
  return base.GetContextForSegue (segueIdentifier);
}

페이지 기반 인터페이스

페이지 기반 인터페이스는 iOS에서 작동하는 방식 UIPageViewController 과 비슷하게 왼쪽에서 오른쪽으로 살짝 밉니다. 화면 아래쪽에 표시기 점이 표시되어 현재 표시되는 페이지를 표시합니다.

샘플 첫 페이지 샘플 두 번째 페이지 샘플 다섯 번째 페이지

페이지 기반 인터페이스를 조사식 앱의 기본 UI로 만들려면 인터페이스 컨트롤러 및 컨텍스트 배열과 함께 사용합니다 ReloadRootControllers .

var controllerNames = new [] { "pageController", "pageController", "pageController", "pageController", "pageController" };
var contexts = new [] { "First", "Second", "Third", "Fourth", "Fifth" };
ReloadRootControllers (controllerNames, contexts);

앱의 다른 장면 중 하나를 사용하여 PresentController 루트가 아닌 페이지 기반 컨트롤러를 표시할 수도 있습니다.

var controllerNames = new [] { "pageController", "pageController", "pageController", "pageController", "pageController" };
var contexts = new [] { "First", "Second", "Third", "Fourth", "Fifth" };
PresentController (controllerNames, contexts);