Sdílet prostřednictvím


Značka JSON MonoTouch.Dialog

Tato stránka popisuje kód JSON přijatý v JsonElement MonoTouch.Dialog

Začněme příkladem. Následuje kompletní soubor JSON, který lze předat do JsonElement.

{     
    "title": "Json Sample",
    "sections": [ 
        {
            "header": "Booleans",
            "footer": "Slider or image-based",
            "id": "first-section",
            "elements": [
                { 
                    "type": "boolean",
                    "caption": "Demo of a Boolean",
                    "value": true
                }, {
                    "type": "boolean",
                    "caption": "Boolean using images",
                    "value": false,
                    "on": "favorite.png",
                    "off": "~/favorited.png"
                }, {
                    "type": "root",
                    "title": "Tap for nested controller",
                    "sections": [
                        {
                            "header": "Nested view!",
                            "elements": [
                                {
                                    "type": "boolean",
                                    "caption": "Just a boolean",
                                    "id": "the-boolean",
                                    "value": false
                                }, {
                                    "type": "string",
                                    "caption": "Welcome to the nested controller"
                                }
                            ]
                        }
                    ]
                }
            ]
        }, {
            "header": "Entries",
            "elements" : [
                {
                    "type": "entry",
                    "caption": "Username",
                    "value": "",
                    "placeholder": "Your account username"
                }
            ]
        }
    ]
}

Výše uvedený kód vytvoří následující uživatelské rozhraní:

The UI created by the given markup

Každý prvek ve stromu může obsahovat vlastnost "id". Za běhu je možné odkazovat na jednotlivé části nebo elementy pomocí indexeru JsonElement. Nějak tak:

var jsonElement = JsonElement.FromFile ("demo.json");

var firstSection = jsonElement ["first-section"] as Section;

var theBoolean = jsonElement ["the-boolean"] as BooleanElement;

Syntaxe kořenového elementu

Kořenový element obsahuje následující hodnoty:

  • title
  • sections (volitelné)

Kořenový prvek se může objevit uvnitř oddílu jako element pro vytvoření vnořeného kontroleru. V takovém případě musí být dodatečná vlastnost "type" nastavena na "root"

url

"url" Pokud je vlastnost nastavena, pokud uživatel klepne na toto RootElement, kód požádá o soubor ze zadané adresy URL a vytvoří obsah zobrazených nových informací. Můžete ho použít k vytvoření rozšíření uživatelského rozhraní ze serveru na základě toho, co uživatel klepne.

skupina

Pokud je nastaveno, nastaví se název skupiny pro kořenový element. Názvy skupin slouží k výběru souhrnu, který se zobrazí jako hodnota kořenového prvku z jednoho z vnořených prvků v elementu. Toto je buď hodnota zaškrtávacího políčka, nebo hodnota přepínače.

přepínač

Identifikuje přepínač vybraný ve vnořených prvcích.

title

Pokud je k dispozici, bude to název použitý pro RootElement.

type

Musí být nastaveno tak, aby "root" se zobrazilo v oddílu (slouží k vnoření kontrolerů).

sections

Toto je pole Json s jednotlivými oddíly.

Syntaxe oddílu

Oddíl obsahuje:

  • header (volitelné)
  • footer (volitelné)
  • elements Pole

Pokud je k dispozici, text záhlaví se zobrazí jako popis oddílu.

Pokud je k dispozici, zápatí se zobrazí v dolní části oddílu.

elementy

Toto je pole prvků. Každý prvek musí obsahovat alespoň jeden klíč, "type" klíč, který se používá k identifikaci typu prvku k vytvoření. Některé prvky sdílejí některé společné vlastnosti jako "caption" a "value". Toto je seznam podporovaných prvků:

  • string elementy (s i bez stylu)
  • entry řádky (běžné nebo heslo)
  • boolean hodnoty (pomocí přepínačů nebo obrázků)

Řetězcové prvky lze použít jako tlačítka poskytnutím metody, která se má vyvolat, když uživatel klepne na buňku nebo příslušenství,

Vykreslovací prvky

Vykreslovací prvky jsou založeny na řetězci C# a StyledStringElement a mohou vykreslovat informace různými způsoby a je možné je vykreslit různými způsoby. Nejjednodušší prvky lze vytvořit takto:

{
    "type": "string",
    "caption": "Json Serializer"
}

Zobrazí se jednoduchý řetězec se všemi výchozími nastaveními: písmo, pozadí, barva textu a dekorace. Akce je možné připojit k těmto prvkům a nastavit je jako tlačítka nastavením "ontap" vlastnosti nebo "onaccessorytap" vlastností:

{
    "type": "string",
    "caption": "View Photos",
    "ontap": "Acme.PhotoLibrary.ShowPhotos"
}

Výše uvedené vyvolá metodu ShowPhotos ve třídě Acme.PhotoLibrary. Je "onaccessorytap" to podobné, ale vyvolá se pouze v případě, že uživatel klepne na příslušenství místo klepnutí na buňku. Pokud to chcete povolit, musíte také nastavit příslušenství:

{
    "type": "string",
    "caption": "View Photos",
    "ontap": "Acme.PhotoLibrary.ShowPhotos",
    "accessory": "detail-disclosure",
    "onaccessorytap": "Acme.PhotoLibrary.ShowStats"
}

Vykreslovací prvky můžou najednou zobrazit dva řetězce, jeden je popis a druhý je hodnota. Způsob vykreslení těchto řetězců závisí na stylu, který můžete nastavit pomocí "style" vlastnosti. Ve výchozím nastavení se na levé straně zobrazí popis a hodnota vpravo. Další podrobnosti najdete v části o stylu. Barvy se kódují pomocí symbolu #, za kterým následuje šestnáctkové číslo, které představují hodnoty červených, zelených, modrých a možná alfa hodnot. Obsah lze zakódovat ve krátké podobě (3 nebo 4 šestnáctkové číslice), které představují hodnoty RGB nebo RGBA. Nebo dlouhý tvar (6 nebo 8 číslic), který představuje hodnoty RGB nebo RGBA. Krátká verze je zkratka pro zápis stejné šestnáctkové číslice dvakrát. Konstanta "#1bc" je tedy zastaralá jako red=0x11, green=0xbb a blue=0xcc. Pokud alfa hodnota není k dispozici, barva je neprůsvitná. Některé příklady:

"background": "#f00"
"background": "#fa08f880"

Příslušenství

Určuje typ přístupového objektu, který se má zobrazit v prvku vykreslování, možné hodnoty jsou:

  • checkmark
  • detail-disclosure
  • disclosure-indicator

Pokud hodnota není k dispozici, nezobrazí se žádné příslušenství.

pozadí

Vlastnost pozadí nastaví barvu pozadí buňky. Hodnota je adresa URL obrázku (v tomto případě se vyvolá asynchronní nástroj pro stahování obrázků a po stažení obrázku se aktualizuje pozadí) nebo může být barva zadaná pomocí syntaxe barvy.

popis

Hlavní řetězec, který se má zobrazit v elementu vykreslování. Písmo a barvu lze přizpůsobit nastavením "textcolor" a "font" vlastností. Styl vykreslování je určen vlastností "style" .

color and detailcolor

Barva, která se má použít pro hlavní text nebo podrobný text.

detailfont a písmo

Písmo, které se má použít pro popis nebo text podrobností. Formát specifikace písma je název písma následovaný pomlčkou a velikostí bodu. Platné specifikace písma:

  • "Helvetica"
  • "Helvetica-14"

linebreak

Určuje, jak se řádky rozdělí. Možné hodnoty:

  • character-wrap
  • clip
  • head-truncation
  • middle-truncation
  • tail-truncation
  • word-wrap

Obě character-wrap a word-wrap lze použít společně s "lines" vlastností nastavenou na nulu k převodu vykreslovacího prvku na víceřádkový prvek.

ontap a onaccessorytap

Tyto vlastnosti musí odkazovat na název statické metody v aplikaci, která přebírá objekt jako parametr. Když vytvoříte hierarchii pomocí metod JsonDialog.FromFile nebo JsonDialog.FromJson, můžete předat volitelnou hodnotu objektu. Tato hodnota objektu se pak předá vašim metodám. Můžete ho použít k předání určitého kontextu statické metodě. Příklad:

class Foo {
    Foo ()
    {
        root = JsonDialog.FromJson (myJson, this);
    }

    static void Callback (object obj)
    {
        Foo myFoo = (Foo) obj;
        obj.Callback ();
    }
}

čáry

Pokud je tato hodnota nastavená na nulu, nastaví se automaticky velikost prvku v závislosti na obsahu obsažených řetězců. Aby to fungovalo, musíte také nastavit "linebreak" vlastnost na "character-wrap" hodnotu nebo "word-wrap".

– styl

Styl určuje typ stylu buňky, který se použije k vykreslení obsahu a odpovídají hodnotám výčtu UITableViewCellStyle. Možné hodnoty:

  • "default"
  • "value1"
  • "value2"
  • "subtitle" : text s podnadpisem.

Titulků

Hodnota, která se má použít pro podnadpis. Toto je zkratka pro nastavení stylu na "subtitle" a nastavení "value" vlastnosti na řetězec. To dělá obojí s jednou položkou.

Textcolor

Barva, která se má použít pro text.

hodnota

Sekundární hodnota, která se má zobrazit v elementu vykreslování. Toto rozložení je ovlivněno "style" nastavením. Písmo a barvu lze přizpůsobit nastavením a "detailfont""detailcolor".

Logické prvky

Logické prvky by měly nastavit typ na "bool", může obsahovat "caption" zobrazení a "value" je nastavena na hodnotu true nebo false. "on" Pokud jsou vlastnosti nastavené"off", předpokládá se, že se jedná o obrázky. Obrázky se přeloží vzhledem k aktuálnímu pracovnímu adresáři v aplikaci. Pokud chcete odkazovat na soubory relativní vzhledem k sadě prostředků, můžete použít "~" jako zástupce k reprezentaci adresáře sady prostředků aplikace. Bude to například "~/favorite.png" favorite.png, která je obsažena v souboru sady. Příklad:

{ 
    "type": "boolean",
    "caption": "Demo of a Boolean",
    "value": true
},

{
    "type": "boolean",
    "caption": "Boolean using images",
    "value": false,
    "on": "favorite.png",
    "off": "~/favorited.png"
}

type

Typ lze nastavit na hodnotu nebo "boolean""checkbox". Pokud je nastavená na logickou hodnotu, použije se uiSlider nebo obrázky (pokud jsou obě "on" i "off" nastavené). Pokud je toto políčko nastavené na zaškrtávací políčko, použije se zaškrtávací políčko. Vlastnost "group" lze použít k označení logického elementu, který patří do konkrétní skupiny. To je užitečné, pokud obsahující kořen má "group" také vlastnost, protože kořen shrne výsledky s počtem všech logických hodnot (nebo zaškrtávacích políček), které patří do stejné skupiny.

Elementy položky

Vstupní prvky slouží k tomu, aby uživatel mohl zadávat data. Typ vstupních prvků je buď "entry" nebo "password". Vlastnost "caption" je nastavena na text, který se má zobrazit vpravo a "value" je nastaven na počáteční hodnotu pro nastavení položky. Slouží "placeholder" k zobrazení nápovědy uživateli pro prázdné položky (zobrazuje se šedě). Několik příkladů:

{
    "type": "entry",
    "caption": "Username",
    "value": "",
    "placeholder": "Your account username"
}, {
    "type": "password",
    "caption": "Password",
    "value": "",
    "placeholder": "You password"
}, {
    "type": "entry",
    "caption": "Zip Code",
    "value": "01010",
    "placeholder": "your zip code",
    "keyboard": "numbers"
}, {
    "type": "entry",
    "return-key": "route",
    "caption": "Entry with 'route'",
    "placeholder": "captialization all + no corrections",
    "capitalization": "all",
    "autocorrect": "no"
}

autocorrect

Určuje styl automatické opravy, který se má použít pro položku. Možné hodnoty jsou true nebo false (nebo řetězce "yes" a "no").

Velká písmena

Styl psaní velkých písmen, který se má použít pro položku. Možné hodnoty:

  • all
  • none
  • sentences
  • words

popis

Popis použít pro položku

klávesnice

Typ klávesnice, který se má použít pro zadávání dat. Možné hodnoty:

  • ascii
  • decimal
  • default
  • email
  • name
  • numbers
  • numbers-and-punctuation
  • twitter
  • url

Zástupný

Text nápovědy, který se zobrazí, když má položka prázdnou hodnotu.

return-key

Popisek použitý pro návratový klíč. Možné hodnoty:

  • default
  • done
  • emergencycall
  • go
  • google
  • join
  • next
  • route
  • search
  • send
  • yahoo

hodnota

Počáteční hodnota položky

Prvky rádia

Radiové prvky mají typ "radio". Vybraná položka je vybrána radioselected vlastností její obsahující kořenový prvek. Kromě toho, pokud je nastavena hodnota pro "group" vlastnost, tento přepínač patří do této skupiny.

Prvky data a času

Typy elementů "datetime""date" a "time" slouží k vykreslení kalendářních dat s časy, kalendářními daty nebo časy. Tyto prvky berou jako parametry popis a hodnotu. Hodnotu lze zapsat v libovolném formátu podporovaném funkcí .NET DateTime.Parse. Příklad:

"header": "Dates and Times",
"elements": [
    {
        "type": "datetime",
        "caption": "Date and Time",
        "value": "Sat, 01 Nov 2008 19:35:00 GMT"
    }, {
        "type": "date",
        "caption": "Date",
        "value": "10/10"
    }, {
        "type": "time",
        "caption": "Time",
        "value": "11:23"
    }                       
]

Html/Web Element

Můžete vytvořit buňku, která po klepnutí vloží UIWebView, která vykreslí obsah zadané adresy URL, buď místní, nebo vzdálené pomocí "html" typu. Jediné dvě vlastnosti pro tento prvek jsou "caption" a "url":

{
    "type": "html",
    "caption": "Miguel's blog",
    "url": "https://tirania.org/blog" 
}