Komme i gang med iOS-visninger og visningskontrollere: Del 2

I del 1 av denne serien så vi på hvordan UIScreen, UIWindow og UIView-objekter danner grunnlaget for brukergrensesnittet til en iOS-app, og vi bygde en enkel app for å demonstrere de essensielle tingene for hvordan de fungerer sammen. I del 2 skal vi utvide appen vår for å demonstrere det grunnleggende om hvordan UIView-kontrollere samhandler med UIViews for å lage et fungerende brukergrensesnitt.

Vi starter der vi slapp med ViewMe-prosjektet fra del 1, så du vil åpne det i Xcode. (Du kan laste ned ViewMe-prosjektet her.)

Koble til et brukergrensesnitt

På slutten av del 1 så appen vår ut som figur A. For å gjøre ting mer interessant, kommer vi til å endre teksten på etiketten og knappen i koden vår i stedet for i Interface Builder, og deretter for å demonstrere hvordan visningskontrollører og visninger fungerer sammen, vil vi koble ting opp slik at når vi trykk på knappen, teksten til etiketten endres.

Figur A

Klikk på MyViewController.xib i Files and Groupes-ruten for å få opp grensesnittet i Interface Builder. Klikk deretter på Assistant Editor øverst til høyre i Xcode-grensesnittet. ( Figur B )

Figur B

Assistent Editor vil vise MyViewController.h i en tilstøtende rute som vist i figur C.

Figur C

Klikk på etiketten for å velge den, og trykk deretter kontrolltasten og dra den fra etiketten til rett under ordet "@ interface" i MyViewController.h. Når du slipper fingeren fra musen, vises tilkoblingsdialogen. Skriv inn "myLabel" i feltet Navn og trykk Enter. Du har nå opprettet et utløp som heter myLabel og koblet det til UIL-etiketten i xib-filen. ( Figur D )

Figur D

Legg merke til eiendommen som automatisk genereres for deg av Xcode og tagget med uttakssymbolet ( figur E ). Denne forbindelsen opprettes automatisk når xib-filen lastes, og UIViewController vil da kunne bruke den til å samhandle med etiketten.

Figur E

Gjenta denne prosessen for knappen og kaller tilkoblingen "myButton". Deretter endrer du størrelse på etiketten og knappen for å være omtrent halvparten av bredden på visningen ved å klikke på dem og dra størrelseshåndtakene for å strekke dem ut. Sett etiketten slik at den midtstiller teksten ved å velge den og deretter klikke på den midtre justeringsknappen i Attributtsinspektøren. ( Figur F )

Figur F

Vis livssyklus

UIViewController er ansvarlig for livssyklusen til utsikten den kontrollerer. Dette inkluderer å laste visningen etter behov og varsle oss når visningen vises og forsvinner. På hvert av disse punktene kaller visningskontrolleren forskjellige metoder som vi kan overstyre for å legge til vår egen funksjonalitet og endre visningens utseende.

I løpet av visningsbelastningssyklusen vil visningskontrolleren kalle loadView-metoden etterfulgt av viewDidLoad. Oftest vil du bare overstyre viewDidLoad; det er sjelden nødvendig å overstyre loadView. Etter at en visning er lastet, forblir den i minnet, så viewDidLoad vil vanligvis bare bli kalt én gang (fra iOS 6 blir visningene ikke lenger renset under forhold med lite minne).

Derimot blir metodene viewWillAppear og viewWillDisappear oppringt hver gang visningen vises eller forsvinner fra skjermen. Dette er et sentralt skille du må huske på. Hvis det er endringer du ønsker å gjøre når visningen opprinnelig er satt opp, for eksempel angi bakgrunnsfarge, vil du gjøre det i viewDidLoad. Hvis du vil at visningen din skal oppdateres med informasjon som endres hver gang den vises (f.eks. Gjeldende temperaturdata i en vær-app), vil du gjøre det i viewWillAppear.

La oss nå bytte til MyViewController.m og se hvordan vi kan endre etiketten og knappen vår når visningen lastes inn. Endre viewDidLoad-metoden som vist nedenfor.

 - (ugyldig) viewDidLoad 
 { 
 // Kjører en gang når UIView-kontrolleren laster utsikten 
 super viewDidLoad; 
 self.myLabel.text = @ "Acme sprengstoff"; 
 self.myButton setTitle: @ "Press Me" forState: UIControlStateNormal; 
 } 
Når vi bygger og kjører appen, vises den nå som vist i figur G. Både knapp og etikett endres før de vises på skjermen.

Figur G

Gå tilbake til MyViewController.m og legg til følgende kode under ViewDidLoad-metoden:

 - (IBAction) -knapp Trykk: (id) avsender 
 { 
 self.myLabel.text = @ "Boom!"; 
 } 

Velg MyViewController.xib i Files and Groupes-ruten. Høyreklikk på knappen for å få frem informasjon om dens egenskaper. Klikk og dra fra "Touch Up Inside" -hendelsen over til "File's Owner".

Dette vil føre til at det vises en liste over tilgjengelige handlinger, og i vårt tilfelle er det bare en handling tilgjengelig med navnet "buttonPression:". Klikk på knappen Trykk: for å opprette forbindelse.

Det vi har gjort er å opprette en metode som heter "buttonPression:" og assosierte den med knappen vår, slik at den blir kalt når du trykker på knappen. Teknisk blir "Touch Up Inside" -hendelsen avfyrt hver gang fingeren forlater knappen - derav forestillingen om "touch up" . Hvis du ser på de andre hendelsesalternativene som er tilgjengelige i figur H, vil du få en forståelse for raffinementet og mulighetene til UIButton. Deklareringsknapp Trykket: med en returtype av IBAction tillatt Interface Builder å bli klar over det og presentere det for oss når vi koblet til MyViewController underklasse (File's Owner).

Figur H

Hvis vi nå bygger og kjører appen, opplever vi at etiketten vår endres når vi trykker på knappen. ( Figur I )

Figur I

Dette eksemplet illustrerer to grunnleggende konsepter du vil bruke gjentatte ganger når du utvikler dine egne apper:

  1. Visninger og underklasser derav, for eksempel UILabel og UIButton, utgjør den synlige delen av appen din.
  2. Visningskontrollører håndterer logikken bak visningene, for eksempel å endre utseende og svare på hendelsene de genererer.

Visninger og visningskontrollere er byggesteinene som alle iOS-apper er bygget på. Sammen med del 1 av denne artikkelen skal du nå ha en klar forståelse av hvordan alle de forskjellige brikkene fungerer sammen for å gi iOS-appen din liv.

Les også:

  • Komme i gang med iOS-visninger og visningskontrollere: Del 1
  • Kjør flere iOS-appnedlastinger med bedre ikoner
  • Utvikle iOS-appene dine, ellers vil de dø i naturen

© Copyright 2020 | mobilegn.com