Tworzenie aplikacji platformy Xamarin.iOS przy użyciu interfejsu API Emocje ion

The MT. Interfejs API Emocje ion języka D umożliwia dekorowane klasy z atrybutami, które mt. D używa metody do automatycznego tworzenia ekranów. Interfejs API odbicia udostępnia powiązanie między tymi klasami i wyświetlanymi na ekranie. Mimo że ten interfejs API nie zapewnia szczegółowej kontrolki, którą wykonuje interfejs API elementów, zmniejsza złożoność, automatycznie tworząc hierarchię elementów na podstawie dekoracji klas.

Konfigurowanie usługi MT. D

MT. Język D jest dystrybuowany za pomocą platformy Xamarin.iOS. Aby go użyć, kliknij prawym przyciskiem myszy węzeł Odwołania projektu Xamarin.iOS w programie Visual Studio 2017 lub Visual Studio dla komputerów Mac i dodaj odwołanie do zestawu MonoTouch.Dialog-1. Następnie dodaj using MonoTouch.Dialog instrukcje w kodzie źródłowym w razie potrzeby.

Wprowadzenie do interfejsu API Emocje ion

Korzystanie z interfejsu API Emocje ion jest tak proste, jak:

  1. Tworzenie klasy ozdobionej za pomocą usługi MT. Atrybuty D.
  2. BindingContext Utworzenie wystąpienia, przekazanie go do wystąpienia powyższej klasy.
  3. Utworzenie obiektu DialogViewController , przekazując go za pomocą polecenia BindingContext’sRootElement .

Przyjrzyjmy się przykładowi, aby zilustrować sposób użycia interfejsu API Emocje ion. W tym przykładzie utworzymy prosty ekran wprowadzania danych, jak pokazano poniżej:

W tym przykładzie utworzymy prosty ekran wprowadzania danych, jak pokazano tutaj

Tworzenie klasy za pomocą usługi MT. Atrybuty D

Pierwszą rzeczą, jaką musimy użyć interfejsu API Emocje ion, jest klasa ozdobiona atrybutami. Te atrybuty będą używane przez mt. D wewnętrznie do tworzenia obiektów z interfejsu API elementów. Rozważmy na przykład następującą definicję klasy:

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

Spowoduje to SectionAttribute utworzenie sekcji UITableView z argumentem ciągu używanym do wypełnienia nagłówka sekcji. Po zadeklarowaniu sekcji każde pole, które następuje po niej, zostanie uwzględnione w tej sekcji, dopóki nie zostanie zadeklarowana inna sekcja. Typ elementu interfejsu użytkownika utworzony dla pola będzie zależeć od typu pola i mt. D atrybut dekorujący go.

Na przykład Name pole jest polem i string jest ozdobione elementem EntryAttribute. Spowoduje to dodanie wiersza do tabeli z polem wprowadzania tekstu i określonym podpis. IsApproved Podobnie pole jest polem bool z wartością CheckboxAttribute, co powoduje, że wiersz tabeli z polem wyboru po prawej stronie komórki tabeli. MT. D używa nazwy pola, automatycznie dodając spację, aby utworzyć podpis w tym przypadku, ponieważ nie jest określony w atrybucie.

Dodawanie elementu BindingContext

Aby użyć Expense klasy, musimy utworzyć klasę BindingContext. A BindingContext to klasa, która będzie wiązać dane z klasy przypisanej w celu utworzenia hierarchii elementów. Aby go utworzyć, po prostu utworzymy wystąpienie i przekażemy wystąpienie klasy przypisanej do konstruktora.

Aby na przykład dodać interfejs użytkownika zadeklarowany przy użyciu atrybutu Expense w klasie, dołącz następujący kod w FinishedLaunching metodzie :AppDelegate

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

Następnie musimy zrobić, aby utworzyć interfejs użytkownika, to dodać BindingContext element do DialogViewController elementu i ustawić go jako RootViewController okno, jak pokazano poniżej:

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

Uruchomienie aplikacji powoduje teraz wyświetlenie ekranu wyświetlanego powyżej.

Dodawanie kontrolki UINavigationController

Zwróć jednak uwagę, że tytuł "Utwórz zadanie", który został przekazany do elementu BindingContext , nie jest wyświetlany. Jest to spowodowane tym, że element DialogViewController nie jest częścią elementu UINavigatonController. Zmieńmy kod, aby dodać element UINavigationController jako okno RootViewController, , a następnie dodajmy DialogViewController go jako katalog główny elementu UINavigationController , jak pokazano poniżej:

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

Teraz po uruchomieniu aplikacji tytuł zostanie wyświetlony na UINavigationController’s pasku nawigacyjnym, jak pokazano na poniższym zrzucie ekranu:

Teraz po uruchomieniu aplikacji tytuł zostanie wyświetlony na pasku nawigacyjnym UINavigationControllers

Dzięki włączeniu UINavigationControllerelementu możemy teraz korzystać z innych funkcji usługi MT. D, dla którego nawigacja jest niezbędna. Na przykład możemy dodać wyliczenie do Expense klasy, aby zdefiniować kategorię wydatków i mt. D automatycznie utworzy ekran wyboru. Aby zademonstrować, zmodyfikuj klasę Expense tak, aby zawierała ExpenseCategory pole w następujący sposób:

public enum Category
{
    Travel,
    Lodging,
    Books
}

public class Expense
{
    …

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

Uruchomienie aplikacji powoduje teraz wyświetlenie nowego wiersza w tabeli dla kategorii, jak pokazano poniżej:

Uruchomienie aplikacji powoduje teraz wyświetlenie nowego wiersza w tabeli dla kategorii, jak pokazano

Wybranie wiersza powoduje przejście aplikacji do nowego ekranu z wierszami odpowiadającymi wyliczeniem, jak pokazano poniżej:

Wybranie wyników wiersza w aplikacji powoduje przejście do nowego ekranu z wierszami odpowiadającymi wyliczeniem

Podsumowanie

W tym artykule przedstawiono przewodnik po interfejsie API Emocje ion. Pokazaliśmy, jak dodać atrybuty do klasy, aby kontrolować, co jest wyświetlane. Omówiliśmy również sposób użycia elementu BindingContext do powiązania danych z klasy z utworzoną hierarchią elementów, a także sposobu używania usługi MT. D z elementem UINavigationController.