Udvikling på iPhone (5): vores første applikation (III)

En vores tidligere artikel Vi havde inkluderet en etiket, en TextField og en knap i grænsefladen til vores applikation. Vi ønskede, at indholdet af etiketten skulle opdateres med det, der blev indtastet i TextField, når vi klikker på knappen. Vi havde (trin 1) oprettet projektet og (trin 2) brugt InterfaceBuilder til at definere skærmen. Nu fortsætter vi med resten af ​​trinene for at lade applikationen fungere.

Trin 3. Opret variabler i ViewController.

Vi har vores interface korrekt. Faktisk, hvis vi gjorde Build & Go, kunne vi se, hvordan det ser ud:

Men der sker åbenlyst intet, når du trykker på knappen, for vi har ikke foretaget den mindste vigtige udvikling. I dette trin 3 vil vi introducere variabler og metoder i HelloWorldViewController, både i grænsefladen (.h-fil) og i implementeringen (.m-fil). For at gøre dette, som vi antydede i slutningen af ​​det forrige indlæg, skal vi vide, at TextField svarer til en UITextField-klasse og etiketten til en UILabel-klasse. Disse 2 klasser er inden for UIKit-rammen.

Hvis vi ikke har lukket og gemt Interface Builder, gør vi det, og i XCode åbner vi filen HelloWorldViewController.h. Koden lige nu vil have noget som dette:

Vi ser allerede på noget Objective-C. I denne kode ser vi en importerklæring fra UIKit-biblioteket, hvor UILabel- og UITextField-klasser er. Vi ser, hvordan grænsefladen erklæres, og at den strækker sig fra den generiske UIViewController fra UIKit.

Inden for interfacekoden inkluderer vi følgende kode:

Vi kan nu forklare, hvad vi har gjort:

  • Vi har erklæret inden for blokken @interface 2 attributter af typen UILabel og UITextField med henholdsvis 2 variabelnavne * label og * textField. I forvejen vises IBOutlet. Hvad er alt dette? Vi forklarer os selv. IBOutlet er ikke en type variabel; er et direktiv, der hjælper Interface Builder med at kende eksistensen af ​​disse variabler af typen UILabel og UITextField. Forresten, husk at vi i den forrige artikel havde givet dig et trick til at kende de variable typer af kontrolobjekterne (knapper, etiket, tekstfelt osv.) I Interface Builder. På den anden side kan spørgsmålet om * foran variabelnavnet måske overraske Java-programmører, ikke så meget for C ... men lær, at det er sådan, du vil skrive instansvariabler i Objective-C.
  • Egenskaberne UILabel og UITextField erklæres. ikke-atomisk og bevarer, vil vi ikke se for nu, det er relateret til hukommelsesstyring.
  • Vi ser, at vi erklærer en metode, updateText. Det har et - tegn foran sig, hvilket indikerer at det er en instansmetode og ikke en klassemetode (et + tegn forklares for dem). Vi kan ikke gå ind på at forklare dette, fordi dette er grundlæggende objektorienteret programmering ... Den metode returnerer ikke noget (dvs. ugyldigt) og modtager en parameter af typen id. Dybest set henviser det til identifikatoren for objektet, der får opkaldet til vores updateTexto-metode, som opdaterer værdien af ​​etiketten. Vi kan gætte, da den kontrol vil være selve knappen ...

Når dette er gjort, er vi færdige med trin 3.


Trin 4. Bind visningskontroller til controllervariabler.

Hvis vi gennemgår, på den ene side har vi udviklet vores interface med Interface Builder, og på den anden side har vi variablerne relateret til disse kontrolelementer i HelloWorldViewController.h (interface til HelloWorldViewController.m controller-klassen). Der er dog stadig ingen sammenhæng mellem visningen og controlleren, det vil sige, vi har ikke givet nogen instruktioner til at relatere for eksempel det tekstfelt, som vi designer i Interface Builder med variablen af ​​typen UITextField, som vi har lagt i klasse. Nu skal vi udføre denne opgave. Vi åbner Interface Builder igen ved at klikke på HelloWorldViewController.xib, klikke på tekstfeltet, og i inspektorpaletten går vi til den anden fane (Text Field Connections). Vi ser, at der er et afsnit kaldet Referencing Outlets, uden at der er noget markeret. Det betyder, at Interface Builder i øjeblikket ikke kender nogen sammenhæng mellem dette tekstfelt og en IBOutlet (Interface Builder Outlet) af en klasse ... men vi har en UITextField IBOutlet i vores HelloWorldViewController, så vi vil linke den.

For at gøre dette, som vi kan se i figuren, ved at klikke på den lille cirkel ud for «Ny henvisningsudgang» trækker vi til filens ejer af vinduet kaldet HelloWorldViewController.xib. Det giver os mulighed for at vælge 2 muligheder, se (den fulde visning) og textField (vores variabel). Vi vælger selvfølgelig textField, og dermed relaterer vi vores tekstfelt til variablen af ​​typen UITextField. Forresten er filens ejer eller ejer af filen hverken mere eller mindre end vores controller-klasse ...

Vi gentager operationen med etiketten og relaterer den til vores controllervariabel. Og med knappen er det noget andet. I dette tilfælde vil vi relatere det til vores updateTexto-operation, men til en bestemt begivenhed. Gør dette med begivenheden 'Touch Up Inside', og vælg vores updateTexto-metode:

Og på denne måde har vi allerede relateret de kontroller, vi havde defineret med Interface Builder, og de variabler, som vi har sat i controlleren. Vi lukker Interface Builder og gemmer alt, og vi går til det sidste trin vender tilbage til XCode.

Trin 5. Seneste udvikling.

I XCode åbner vi HelloWorldViewController.my, og vi sætter følgende kode, så vores klasse ser sådan ud:

Hvis vi ser nøje, har vi simpelthen lagt blokken @synthesize, og implementeringen af ​​metoden erklæret i grænsefladen .h, updateTexto. Under denne kode vil du have en masse kommenteret kode.

Linjen @synthesize gør noget, der ligner at generere den typiske getter / setter (accessors / mutatorer), der er typisk i OO-sprog (indkapsling). Vi har brug for dem, så indholdet når f.eks. Controlleren til tekstboksen.

Metoden updateTexto, som du kan se, opdaterer simpelthen teksten på vores etiket med indholdet af tekstfeltet. Vi er færdige.

Nu gør vi simpelthen Build & Go, og du vil se, at når du indtaster en tekststreng og klikker på knappen, opdateres indholdet af etiketten. I den næste artikel introducerer vi forbedringer af vores applikation.


Følg os på Google Nyheder

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Peter sagde han

    Meget god tutorial, meget klar og enkel.

  2.   rubdotto.com sagde han

    Jeg må være meget melon 🙁 fordi det virker ikke for mig. Jeg har fanget værdien i en streng, og den tager teksten, men den tildeler den ikke til etiketten, i det mindste maler den ikke den, fordi jeg prøver at se etiketten.tekst, og den fortæller mig uden for rækkevidde ...

  3.   leo2279 sagde han

    Fremragende dine tutorials, det forklarer virkelig meget godt denne udvikling til iphone, jeg håber du fortsætter med at udgive flere tutorials.

    hensyn

  4.   Mariano sagde han

    Hej, alt sammen sejt, men det virker ikke. For at få det til at fungere var jeg nødt til at forbinde visningen af ​​interface-builder med visningen i terningen, som du lærer at gøre med tekstfeltet og etiketten. For resten tak meget.