다음을 통해 공유


리플렉션 API를 사용하여 Xamarin.iOS 애플리케이션 만들기

MT입니다. D 리플렉션 API를 사용하면 클래스를 MT 특성으로 데코레이팅할 수 있습니다. D는 화면을 자동으로 만드는 데 사용합니다. 리플렉션 API는 이러한 클래스와 화면에 표시되는 항목 간에 바인딩을 제공합니다. 이 API는 요소 API가 수행하는 세분화된 컨트롤을 제공하지 않지만 클래스 장식에 따라 요소 계층 구조를 자동으로 구축하여 복잡성을 줄입니다.

MT 설정 D

마운트. D는 Xamarin.iOS와 함께 배포됩니다. 이를 사용하려면 Visual Studio 2017에서 Xamarin.iOS 프로젝트의 참조 노드를 마우스 오른쪽 단추로 클릭하거나 Mac용 Visual Studio MonoTouch.Dialog-1 어셈블리에 대한 참조를 추가합니다. 그런 다음 필요에 따라 소스 코드에 문을 추가 using MonoTouch.Dialog 합니다.

리플렉션 API 시작

리플렉션 API 사용은 다음과 같이 간단합니다.

  1. MT로 데코레이팅된 클래스 만들기 D 특성입니다.
  2. 인스턴스를 BindingContext 만들고 위의 클래스의 인스턴스를 전달합니다.
  3. 만들기 , DialogViewController 이를 전달합니다 BindingContext’sRootElement .

리플렉션 API를 사용하는 방법을 설명하는 예제를 살펴보겠습니다. 이 예제에서는 아래와 같이 간단한 데이터 입력 화면을 빌드합니다.

이 예제에서는 다음과 같이 간단한 데이터 입력 화면을 빌드합니다.

MT를 사용하여 클래스 만들기 D 특성

리플렉션 API를 가장 먼저 사용해야 하는 것은 특성으로 데코레이팅된 클래스입니다. 이러한 특성은 MT에서 사용됩니다. 내부적으로 Elements API에서 개체를 만듭니다. 예를 들어 다음 클래스 정의를 고려합니다.

public class Expense
{
    [Section("Expense Entry")]

    [Entry("Enter expense name")]
    public string Name;

    [Section("Expense Details")]

    [Caption("Description")]
    [Entry]
    public string Details;

    [Checkbox]
    public bool IsApproved = true;
}

그러면 SectionAttribute 섹션의 헤더를 UITableView 채우는 데 사용되는 문자열 인수와 함께 생성되는 섹션이 생성됩니다. 섹션이 선언되면 다른 섹션이 선언될 때까지 섹션 뒤에 오는 모든 필드가 해당 섹션에 포함됩니다. 필드에 대해 만든 사용자 인터페이스 요소의 형식은 필드의 형식 및 MT에 따라 달라집니다. D 특성을 데코레이팅합니다.

예를 들어 Name 필드는 a string 이고 이 필드는 로 데코레이트 EntryAttribute됩니다. 그러면 텍스트 입력 필드와 지정된 캡션 있는 행이 테이블에 추가됩니다. 마찬가지로 IsApproved 이 필드는 테이블 셀의 오른쪽에 검사box가 있는 테이블 행이 있는 필드 boolCheckboxAttribute입니다. 마운트. D는 필드 이름을 사용하여 공백을 자동으로 추가하여 이 경우 특성에 지정되지 않으므로 캡션 만듭니다.

BindingContext 추가

클래스BindingContextExpense 사용하려면 . A BindingContext 는 특성이 지정된 클래스의 데이터를 바인딩하여 요소의 계층 구조를 만드는 클래스입니다. 만들려면 인스턴스화하고 특성이 지정된 클래스의 인스턴스를 생성자에 전달하기만 하면 됩니다.

예를 들어 클래스에서 특성을 사용하여 선언한 UI를 Expense 추가하려면 다음 코드를 다음 메서드AppDelegateFinishedLaunching 포함합니다.

var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");

그런 다음 UI를 만들기 위해 해야 할 일은 아래와 같이 창에 UI를 추가하고 BindingContextDialogViewController 창으로 RootViewController 설정하는 것뿐입니다.

UIWindow window;

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{   
    window = new UIWindow (UIScreen.MainScreen.Bounds);

    var expense = new Expense ();
    var bctx = new BindingContext (null, expense, "Create a task");
    var dvc = new DialogViewController (bctx.Root);

    window.RootViewController = dvc;
    window.MakeKeyAndVisible ();

    return true;
}

이제 애플리케이션을 실행하면 위에 표시된 화면이 표시됩니다.

UINavigationController 추가

그러나 전달 BindingContext 한 "작업 만들기" 제목은 표시되지 않습니다. 이는 .의 DialogViewControllerUINavigatonController일부가 아니기 때문입니다. 코드를 변경하여 창으로 추가하고 UINavigationController 아래와 같이 루트 UINavigationController 로 추가 DialogViewControllerRootViewController, 보겠습니다.

nav = new UINavigationController(dvc);
window.RootViewController = nav;

이제 애플리케이션을 실행하면 아래 스크린샷과 같이 제목이 UINavigationController’s 탐색 모음에 표시됩니다.

이제 애플리케이션을 실행하면 제목이 UINavigationControllers 탐색 모음에 표시됩니다.

이제 MT의 UINavigationController다른 기능을 활용할 수 있습니다. 탐색이 필요한 D입니다. 예를 들어 클래스에 열거형을 Expense 추가하여 비용 범주 및 MT를 정의할 수 있습니다. D는 선택 화면을 자동으로 만듭니다. 보여 주려면 다음과 같이 필드를 포함하도록 클래스를 ExpenseCategory 수정 Expense 합니다.

public enum Category
{
    Travel,
    Lodging,
    Books
}

public class Expense
{
    …

    [Caption("Category")]
    public Category ExpenseCategory;
}

이제 애플리케이션을 실행하면 다음과 같이 범주에 대한 테이블의 새 행이 생성됩니다.

이제 애플리케이션을 실행하면 표시된 대로 범주에 대한 테이블의 새 행이 생성됩니다.

행을 선택하면 애플리케이션에서 아래와 같이 열거형에 해당하는 행이 있는 새 화면으로 이동됩니다.

행을 선택하면 애플리케이션이 열거형에 해당하는 행이 있는 새 화면으로 이동됩니다.

요약

이 문서에서는 리플렉션 API의 연습을 제공했습니다. 클래스에 특성을 추가하여 표시되는 항목을 제어하는 방법을 보여 줬습니다. 또한 클래스에서 생성된 요소 계층 구조로 데이터를 바인딩하는 방법과 BindingContext MT를 사용하는 방법에 대해서도 설명했습니다. D와 함께 .UINavigationController