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);