Vývoj na iPhone (5): naše první aplikace (III)

En náš předchozí článek jsme do rozhraní naší aplikace zahrnuli štítek, textový pole a tlačítko. Chtěli jsme, aby byl obsah štítku aktualizován o to, co bylo zadáno do pole TextField po kliknutí na tlačítko. Vytvořili jsme (krok 1) projekt a (krok 2) jsme k definování obrazovky použili InterfaceBuilder. Nyní budeme pokračovat zbývajícími kroky, abychom nechali aplikaci funkční.

Krok 3. Vytvořte proměnné v ViewController.

Máme naše rozhraní správně. Ve skutečnosti, kdybychom vytvořili Build & Go, mohli bychom vidět, jak to vypadá:

Při stisknutí tlačítka se ale samozřejmě nic neděje, protože jsme neudělali minimální zásadní vývoj. V tomto kroku 3 představíme proměnné a metody v HelloWorldViewController, a to jak v rozhraní (soubor .h), tak v implementaci (soubor .m). Chcete-li to provést, jak jsme naznačili na konci předchozího příspěvku, musíme vědět, že TextField odpovídá třídě UITextField a Label třídě UILabel. Tyto 2 třídy jsou v rámci UIKit.

Pokud jsme neotevřeli a neuložili Interface Builder, uděláme to a v XCode otevřeme soubor HelloWorldViewController.h. Kód právě teď bude mít něco takového:

Už se díváme na nějaký Objective-C. V tomto kódu vidíme deklaraci importu knihovny UIKit, kde jsou třídy UILabel a UITextField. Vidíme, jak je rozhraní deklarováno a že se rozšiřuje od obecného UIViewController UIKit.

V rámci kódu rozhraní zahrneme následující kód:

Nyní můžeme vysvětlit, co jsme udělali:

  • V rámci bloku @interface jsme deklarovali 2 atributy typu UILabel a UITextField se 2 názvy proměnných * label a * textField. Před námi se objeví IBOutlet. Co to všechno je? Vysvětlujeme si to. IBOutlet není typ proměnné; je směrnice, která pomáhá Interface Builderu znát existenci těchto proměnných typu UILabel a UITextField. Mimochodem, pamatujte, že v předchozím článku jsme vám dali trik, jak znát typy proměnných ovládacích objektů (tlačítka, štítek, textové pole atd.) V Interface Builder. Na druhou stranu může otázka * před názvem proměnné překvapit programátory Javy, ne tolik jako C ... ale zjistěte, že takto budete psát proměnné instance v Objective-C.
  • Vlastnosti UILabel a UITextField jsou deklarovány. neanatomické a ponecháme si to zatím neuvidíme, souvisí to se správou paměti.
  • Vidíme, že deklarujeme metodu updateText. Má před sebou znaménko -, což naznačuje, že se jedná o instanční metodu, a nikoli o třídní metodu (pro ně je vysvětleno znaménko +). Nemůžeme to vysvětlit, protože se jedná o základní objektově orientované programování ... Tato metoda nevrací nic (tj. Neplatí) a přijímá parametr typu id. V zásadě odkazuje na identifikátor objektu, který způsobí volání naší metody updateTexto, která aktualizuje hodnotu štítku. Můžeme hádat, protože tento ovládací prvek bude samotné tlačítko ...

Jakmile je to hotovo, jsme hotovi s krokem 3.


Krok 4. Vázat ovládací prvky zobrazení na proměnné řadiče.

Pokud zkontrolujeme, na jedné straně jsme vyvinuli naše rozhraní s Interface Builder a na druhé straně máme proměnné související s těmito ovládacími prvky ve třídě HelloWorldViewController.h (rozhraní třídy kontroleru HelloWorldViewController.m). Stále však neexistuje žádný vztah mezi pohledem a řadičem, to znamená, že jsme nedali žádné pokyny týkající se například textového pole, které navrhujeme v Interface Builderu s proměnnou typu UITextField, kterou jsme vložili do třída. Nyní provedeme tento úkol. Znovu otevřeme Interface Builder kliknutím na HelloWorldViewController.xib, kliknutím na textové pole a v paletě Inspektor přejdeme na druhou kartu (Připojení textového pole). Vidíme, že existuje sekce s názvem Odkazy na odkazy, aniž by tam bylo něco označeno. To znamená, že v tuto chvíli Interface Builder nezná žádný vztah mezi tímto textovým polem a IBOutlet (Interface Builder Outlet) třídy ... ale v našem HelloWorldViewController máme UITextField IBOutlet, takže ho propojíme.

Chcete-li to provést, jak vidíme na obrázku, kliknutím na malý kruh vedle položky „Nový odkazující výstup“ přetáhneme na vlastníka souboru okna s názvem HelloWorldViewController.xib. Umožní nám vybrat 2 možnosti, view (úplné zobrazení) a textField (naše proměnná). Je zřejmé, že zvolíme textField, a tím spojíme naše textové pole s proměnnou jeho typu UITextField. Mimochodem, vlastník souboru nebo vlastník souboru není o nic menší než naše třída řadičů ...

Opakujeme operaci se štítkem, vztahující se k našemu štítku proměnné řadiče. A s tlačítkem je to něco jiného. V tomto případě to budeme vztahovat k naší operaci updateTexto, ale pro konkrétní událost. Udělejte to pomocí události „Touch Up Inside“ a vyberte naši metodu updateTexto:

A tímto způsobem již máme související ovládací prvky, které jsme definovali pomocí Interface Builder a proměnné, které jsme vložili do řadiče. Zavřeme Interface Builder a vše uložíme a přejdeme k poslednímu kroku, který se vrací do XCode.

Krok 5. Nejnovější vývoj.

V XCode otevřeme HelloWorldViewController.my a vložíme následující kód, aby naše třída vypadala takto:

Podíváme-li se pozorně, jednoduše jsme vložili blok @synthesize a implementaci metody deklarované v rozhraní .h, updateTexto. Pod tímto kódem budete mít spoustu komentovaných kódů.

Linka @synthesize dělá něco podobného jako generování typického getru / setteru (přistupujících / mutátorů) typických v OO jazycích (zapouzdření). Potřebujeme je, aby se obsah dostal k řadiči, například textového pole.

Metoda updateTexto, jak vidíte, jednoduše aktualizuje text našeho štítku o obsah textového pole. Jsme hotovi.

Nyní jednoduše vytvoříme Build & Go a uvidíte, že když zadáte textový řetězec a kliknete na tlačítko, obsah štítku se aktualizuje. V dalším článku představíme vylepšení naší aplikace.


Sledujte nás ve Zprávách Google

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Pedro řekl

    Velmi dobrý návod, velmi jasný a jednoduchý.

  2.   rubdotto.com řekl

    Musím být velmi meloun, protože to na mě nefunguje. Zachytil jsem hodnotu v řetězci a přebírá text, ale nepřiřazuje ji k štítku, alespoň to nemaluje, protože se snažím vidět label.text a říká mi to mimo rozsah ...

  3.   leo2279 řekl

    Vynikající vaše výukové programy, velmi dobře to vysvětluje tento vývoj pro iPhone, doufám, že budete i nadále publikovat další výukové programy.

    jde o

  4.   Mariano řekl

    Ahoj, v pohodě, ale nefunguje to. Aby to fungovalo, musel jsem propojit pohled stavitele rozhraní s pohledem v krychli, jak to učíte s textovým polem a štítkem. Za zbytek vám moc děkuji.