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:
- Tworzenie klasy ozdobionej za pomocą usługi MT. Atrybuty D.
BindingContext
Utworzenie wystąpienia, przekazanie go do wystąpienia powyższej klasy.- Utworzenie obiektu
DialogViewController
, przekazując go za pomocą poleceniaBindingContext’s
RootElement
.
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:
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:
Dzięki włączeniu UINavigationController
elementu 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:
Wybranie wiersza powoduje przejście aplikacji do nowego ekranu z wierszami odpowiadającymi wyliczeniem, jak pokazano poniżej:
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
.