Utvecklar på iPhone (5): vår första applikation (III)

En vår tidigare artikel Vi hade inkluderat en etikett, en TextField och en knapp i gränssnittet för vår applikation. Vi ville att innehållet i etiketten skulle uppdateras med vad som angavs i TextField när vi klickade på knappen. Vi hade (steg 1) skapat projektet och (steg 2) använt InterfaceBuilder för att definiera skärmen. Nu fortsätter vi med resten av stegen för att låta applikationen fungera.

Steg 3. Skapa variabler i ViewController.

Vi har vårt gränssnitt korrekt. Om vi ​​gjorde Build & Go kunde vi faktiskt se hur vi har det:

Men uppenbarligen händer ingenting när du trycker på knappen, för vi har inte gjort de viktigaste utvecklingen. I detta steg 3 kommer vi att introducera variablerna och metoderna i HelloWorldViewController, både i gränssnittet (.h-fil) och i implementeringen (.m-fil). För att göra detta, som vi angav i slutet av föregående inlägg, måste vi veta att TextField motsvarar en UITextField-klass och etiketten till en UILabel-klass. Dessa två klasser ligger inom UIKit-ramverket.

Om vi ​​inte har stängt och sparat Interface Builder gör vi det och i XCode öppnar vi filen HelloWorldViewController.h. Koden just nu kommer att ha något så här:

Vi tittar redan på några Objective-C. I den här koden ser vi en importdeklaration av UIKit-biblioteket, där klasserna UILabel och UITextField finns. Vi ser hur gränssnittet deklareras och att det sträcker sig från UIKits generiska UIViewController.

Inom gränssnittskoden inkluderar vi följande kod:

Vi kan nu förklara vad vi har gjort:

  • Vi har förklarat attributen @interface block 2 av typen UILabel och UITextField, med två variabla namn * etikett respektive * textField. Framåt visas IBOutlet. Vad är allt detta? Vi förklarar oss själva. IBOutlet är inte en typ av variabel; är ett direktiv som hjälper Interface Builder att veta förekomsten av dessa variabler av typen UILabel och UITextField. Förresten, kom ihåg att vi i föregående artikel gav dig ett knep för att känna till de variabla typerna av kontrollobjekten (knappar, etikett, textfält, etc.) i Interface Builder. Å andra sidan kan frågan om * framför variabelnamnet överraska Java-programmerare, inte så mycket de för C ... men lär dig att det är så du skriver instansvariabler i Objective-C.
  • Egenskaperna UILabel och UITextField deklareras. nonatomic och behålla kommer vi inte att se för nu, det är relaterat till minneshantering.
  • Vi ser att vi förklarar en metod, updateText. Den har ett - tecken framför sig, vilket indikerar att det är en instansmetod och inte en klassmetod (ett + tecken förklaras för dem). Vi kan inte gå in på att förklara detta eftersom det här är grundläggande objektorienterad programmering ... Den metoden returnerar ingenting (det vill säga ogiltig) och får en parameter av typ id. I grund och botten hänvisar det till identifieraren för objektet som kommer att orsaka anropet till vår updateTexto-metod, som kommer att uppdatera värdet på etiketten. Vi kan gissa eftersom den kontrollen är själva knappen ...

När detta är klart är vi klara med steg 3.


Steg 4. Binda kontroller till kontrollvariabler.

Om vi ​​granskar har vi å ena sidan utvecklat vårt gränssnitt med Interface Builder och å andra sidan har vi variablerna relaterade till dessa kontroller i HelloWorldViewController.h (gränssnitt för HelloWorldViewController.m-kontrollerklassen). Det finns dock fortfarande inget samband mellan vyn och styrenheten, det vill säga vi har inte gett några instruktioner för att relatera till exempel textfältet som vi designar i Interface Builder med variabeln av typen UITextField som vi har lagt i klass. Nu ska vi göra den här uppgiften. Vi öppnar Interface Builder igen genom att klicka på HelloWorldViewController.xib, klicka på textrutan och i paletten Inspektör går vi till den andra fliken (Text Field Connections). Vi ser att det finns ett avsnitt som heter Referencing Outlets, utan att det finns något markerat. Det betyder att Interface Builder för tillfället inte känner till något samband mellan detta textfält och en IBOutlet (Interface Builder Outlet) av en klass ... men vi har en UITextField IBOutlet i vår HelloWorldViewController, så vi kommer att länka den.

För att göra detta, som vi kan se i figuren, genom att klicka på den lilla cirkeln bredvid «New Referencing Outlet» drar vi till filens ägare till fönstret HelloWorldViewController.xib. Det låter oss välja två alternativ, visa (hela bilden) och textField (vår variabel). Uppenbarligen väljer vi textField, och därmed relaterar vi vår textruta till variabeln av sin typ UITextField. Förresten är filens ägare eller filens ägare varken mer eller mindre än vår kontrollerklass ...

Vi upprepar operationen med etiketten och relaterar den till vår kontrollervariabel. Och med knappen är det något annat. I det här fallet ska vi relatera det till vår updateTexto-operation, men för en specifik händelse. Gör detta med "Touch Up Inside" -händelsen och välj vår updateText-metod:

Och på detta sätt har vi redan relaterat de kontroller som vi hade definierat med Interface Builder och de variabler som vi har lagt i styrenheten. Vi stänger Interface Builder och sparar allt och vi går till sista steget tillbaka till XCode.

Steg 5. Senaste utvecklingen.

I XCode öppnar vi HelloWorldViewController.my och vi lägger följande kod så att vår klass ser ut så här:

Om vi ​​tittar noggrant har vi helt enkelt lagt blocket @synthesize, och implementeringen av metoden deklareras i gränssnittet .h, updateTexto. Under den koden kommer du att ha mycket kommenterad kod.

Linjen @synthesize gör något som genererar den typiska getter / setter (accessorer / mutatorer) som är typiska för OO-språk (inkapsling). Vi behöver dem så att styrenheten når innehållet, till exempel i textrutan.

Metoden updateTexto, som du kan se, uppdaterar helt enkelt texten på vår etikett med innehållet i textfältet. Vi är klara.

Nu gör vi helt enkelt Build & Go, och du kommer att se att när du anger en textsträng och klickar på knappen uppdateras etikettens innehåll. I nästa artikel kommer vi att introducera förbättringar av vår applikation.


Följ oss på Google Nyheter

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Peter sade

    Mycket bra handledning, mycket tydlig och enkel.

  2.   rubdotto.com sade

    Tja, jag måste vara väldigt melon 🙁 eftersom det inte fungerar för mig. Jag har fångat värdet i en sträng och det tar texten men det tilldelar det inte till etiketten, åtminstone målar det inte det, för jag försöker se label.text och det säger mig utanför räckvidden ...

  3.   leo2279 sade

    Utmärkt dina tutorials, det förklarar verkligen mycket bra denna utveckling för iPhone, jag hoppas att du fortsätter att publicera fler tutorials.

    gäller

  4.   Mariano sade

    Hej, allt coolt, men det fungerar inte. För att få det att fungera var jag tvungen att länka gränssnittsbyggarens vy med vyn i kuben, som du lär dig att göra med textfältet och etiketten. För resten, tack så mycket.