Vytvoření aplikace Xamarin.iOS pomocí rozhraní Reflection API
The MT. Rozhraní API reflexe D umožňuje, aby třídy byly zdobeny atributy, které MT. D používá k automatickému vytváření obrazovek. Rozhraní API reflexe poskytuje vazbu mezi těmito třídami a obsahem zobrazeným na obrazovce. I když toto rozhraní API neposkytuje jemně odstupňované řízení, které rozhraní API prvků dělá, snižuje složitost tím, že automaticky vytváří hierarchii prvků na základě dekorace třídy.
Nastavení MT. D
MT. D se distribuuje s Xamarin.iOS. Pokud ho chcete použít, klikněte pravým tlačítkem myši na uzel Odkazy projektu Xamarin.iOS v sadě Visual Studio 2017 nebo Visual Studio pro Mac a přidejte odkaz na sestavení MonoTouch.Dialog-1. Potom podle potřeby přidejte using MonoTouch.Dialog
do zdrojového kódu příkazy.
Začínáme s rozhraním Reflection API
Použití rozhraní Reflection API je jednoduché jako:
- Vytvoření třídy zdobené mt. Atributy D.
- Vytvoříte
BindingContext
instanci a předáte ji instanci výše uvedené třídy. - Vytvoření ,
DialogViewController
předání .BindingContext’s
RootElement
Podívejme se na příklad, který ukazuje, jak používat rozhraní Reflection API. V tomto příkladu vytvoříme jednoduchou obrazovku pro zadávání dat, jak je znázorněno níže:
Vytvoření třídy pomocí MT Atributy D
První věc, kterou potřebujeme použít rozhraní Reflection API, je třída zdobená atributy. Tyto atributy bude používat MT. D interně pro vytváření objektů z rozhraní Elements API. Představte si například následující definici třídy:
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;
}
Výsledkem SectionAttribute
budou oddíly vytvořeného UITableView
řetězce s argumentem řetězce použitým k naplnění hlavičky oddílu. Jakmile je oddíl deklarován, bude každé pole, které následuje, zahrnuty do této části, dokud nebude deklarován jiný oddíl.
Typ prvku uživatelského rozhraní vytvořený pro pole bude záviset na typu pole a MT. D atribut decorating it.
Například Name
pole je a string
je zdobeno .EntryAttribute
Výsledkem je přidání řádku do tabulky s textovým polem pro zadávání a zadaným titulkem. IsApproved
Podobně je pole se bool
CheckboxAttribute
zaškrtávacím políkem na pravé straně buňky tabulky. MT. D používá název pole, automaticky přidává mezeru k vytvoření titulku v tomto případě, protože není zadán v atributu.
Přidání BindingContextu
Abychom mohli třídu použítExpense
, musíme vytvořit .BindingContext
A BindingContext
je třída, která vytvoří vazbu dat z atributu třídy k vytvoření hierarchie prvků. Abychom ho vytvořili, jednoduše vytvoříme instanci a předáme instanci atributové třídy konstruktoru.
Pokud například chcete přidat uživatelské rozhraní, které jsme deklarovali pomocí atributu Expense
ve třídě, přidejte do FinishedLaunching
metody metody AppDelegate
následující kód:
var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");
Pak stačí, když uživatelské rozhraní vytvoříme, přidáme BindingContext
ho do DialogViewController
okna a nastavíme ho jako RootViewController
okno, jak je znázorněno níže:
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;
}
Spuštění aplikace teď vede k zobrazení obrazovky zobrazené výše.
Přidání uiNavigationController
Všimněte si ale, že název "Vytvořit úkol", který jsme předali do seznamu BindingContext
, se nezobrazuje. Je to proto, že DialogViewController
není součástí UINavigatonController
. Pojďme změnit kód, který přidá UINavigationController
jako okno RootViewController,
, a přidáme DialogViewController
jako kořen kořenového UINavigationController
adresáře, jak je znázorněno níže:
nav = new UINavigationController(dvc);
window.RootViewController = nav;
Když teď spustíme aplikaci, zobrazí se název na navigačním UINavigationController’s
panelu, jak ukazuje následující snímek obrazovky:
Zahrnutím UINavigationController
, nyní můžeme využít další funkce MT. D, pro kterou je navigace nutná. Do třídy můžeme například přidat výčet Expense
, který definuje kategorii pro výdaje a MT. D automaticky vytvoří obrazovku výběru. Chcete-li předvést, upravte Expense
třídu tak, aby zahrnovala ExpenseCategory
pole následujícím způsobem:
public enum Category
{
Travel,
Lodging,
Books
}
public class Expense
{
…
[Caption("Category")]
public Category ExpenseCategory;
}
Spuštění aplikace teď vede k novému řádku v tabulce pro kategorii, jak je znázorněno na obrázku:
Výběrem řádku přejde aplikace na novou obrazovku s řádky odpovídajícími výčtu, jak je znázorněno níže:
Shrnutí
Tento článek představil návod k rozhraní Reflection API. Ukázali jsme, jak přidat atributy do třídy pro řízení toho, co se zobrazí. Také jsme probrali, jak použít BindingContext
k vytvoření vazby dat z třídy na hierarchii prvků a jak používat MT. D s .UINavigationController