Swift er et fantastisk programmeringsspråk som Apple introduserte under WWDC 2014, og nå bruker nesten alle Apple-utviklere det til å programmere iOS- og OS X-applikasjoner. Den er veldig fleksibel, enklere å bruke enn sin forgjenger Mål C, og det vil spare deg noen dyrebare minutter når du kodes med XCode.
Dette er et kraftig og intuitivt programmeringsspråk for iOS, OS X, tvOS og watchOS. Skrive Swift-koden er interaktiv og morsom, syntaksen er kortfattet, men uttrykkelig, og Swift inkluderer moderne funksjoner utviklere kjærlighet. Hvis du ikke bruker Swift allerede, kan du se noen av våre andre gode opplæringsprogrammer på Swift-språket:
Mesteparten av tiden, når du bygger en iOS-app med mer enn ett skjermbilde, må du sende data mellom View Controllers, slik at de kan dele innholdet uten å miste dem underveis. I denne opplæringen lærer du hvordan du gjør det. Vi vil bruke en string
, en Integer
, og også a UIImage
, så fortsett å lese - du vil bli overrasket over hvor lett denne jobben er med Swift.
Først av alt, opprett et nytt XCode-prosjekt. Velge Enkeltvisningsprogram og navnet på prosjektet, men du vil. Du finner en ViewController.swift fil i fillisten på panelet til venstre og et kontroller-grensesnitt i Storyboard.
Start med å dra en ny visningskontroller fra objektbiblioteket til Storyboard.
Legg inn den første kontrolleren din i en NavigationController
, så når du trykker på neste kontroller, vises topplinjen som standard Tilbake knapp. Velg nå den første kontrolleren i Storyboard og klikk på Redaktør > Legge inn i ... > Navigasjonskontroller.
Legg nå til en UILabel
og a UIButton
til kontrolleren. Du kan finne dem i Objekt-biblioteket og dra dem inn i din første kontroller. Dobbeltklikk deretter på UILabel
og skriv inn teksten du vil sende til den andre kontrolleren. Jeg har nettopp satt sin tekst til "Tekst å passere".
På den andre kontrolleren drar du en ny UILabel
hvor som helst du vil og bare la teksten være slik den er.
Vi må nå opprette en ny .fort fil og legg den til vår andre kontroller. Så høyreklikk i fillistelisten til venstre, klikk Ny fil ... , å velge Cocoa Touch Class fra iOS-kilde kategori, klikk neste, og navn den nye visnings kontrolleren SecondVC
. (Ingen mellomrom er tillatt i navnet, og det må starte med et stort bokstav.)
Nå må du koble den andre kontrolleren i Storyboard med den nye SecondVC.swift fil. Velg den gule sirkelen øverst på kontrolleren, klikk på Identifiser inspektør panelikonet på høyre side av XCode-vinduet, og skriv inn navnet på det nye .fort fil i Klasse og StoryboardID Enger.
Del XCode-vinduet i to deler ved å klikke på Assistent redaktør knappen i øverste høyre hjørne. Nå har du Storyboard til venstre og det er relevant .fort filen på høyre side.
Koble til UILabel
som en IBOutlet
og UIButton
som en IBAction
til din .fort fil ved å holde høyre museknapp (eller Styre tast og museknapp) over disse visningene og dra den blå linjen rett under klasse
erklæring.
Når du slipper musen, kan du gi et navn til etikettens uttak og til knappens handling i den lille grå popupen som vises. For knappen, sørg for å klikke på den lille kombinasjonsboksen som sier Outlet og slå den inn i Handling, fordi vi trenger det til å være en funksjon, ikke et uttak.
Når du er ferdig med å koble alle visningene, må du holde XCode-vinduet delt i to seksjoner, og velg den første kontrolleren fra Storyboard. Nå vil høyre side vise ViewController.swift fil og du vil være klar til å skrive noen kode i den.
Legg følgende kode i goButton ()
metode.
la myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") som! SecondVC myVC.stringPassed = myLabel.text! navigationController? .pushViewController (myVC, animert: true)
Den første linjen instanserer SecondVC
kontrolleren fra Storyboard.
Den andre linjen er faktisk kjernen i denne opplæringen, fordi den tildeler mylabel
s tekst til UILabel
vi har lagt inn i SecondVC
kontrolleren. Det gjør det ved å sette en string
at vi er gong å erklære senere.
Så til slutt, skyver vi bare visningen til neste kontroller.
Velg den andre kontrolleren i Storyboard og legg til denne variabelen rett under SecondVC
klassedeklarasjon:
var stringPassed = ""
Gjør appen tilordne verdien av denne variabelen til secondLabel
med følgende linje av kode i viewDidLoad ()
metode.
secondLabel.text = stringPassed
Du er ferdig! Kjør appen på iOS-simulatoren eller en ekte enhet, trykk GÅ! og du bør få noe slikt:
Som du kan se, er Tekst å passere string
har blitt bestått til vår SecondVC
kontrolleren.
La oss nå prøve å legge til en helhet (int
i Swift) og dele det mellom de to kontrollerne.
Legg til følgende variabel i ViewController.swift
, rett under mylabel
Outlets erklæring.
var myInt = Int ()
Initialiser verdien sin i viewDidLoad ()
:
overstyr func viewDidLoad () super.viewDidLoad () myInt = 5
Deretter redigerer du goButton ()
funksjon ved å legge til en forekomst som også vil passere våre Myint
verdi til neste kontroller, som følger:
la myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") som! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt navigationController? .pushViewController (myVC, animert: true)
Gå nå inn SecondVC.swift og legg først til en variabel av typen int
Det vil få nummeret vi sender fra den første kontrolleren. Legg denne linjen med kode rett under stringPassed
variabel.
var intPassed = Int ()
Rediger secondLabel
linje med kode som følger:
secondLabel.text = stringPassed + "min Int: \ (intPassed)"
Det er alt. Kjør appen igjen og trykk på GÅ! knappen, og du bør få noe slikt:
Så nå ser du hvor lett det er å passere variabler fra en kontroller til en annen. Det siste jeg vil vise deg, er hvordan du skal passere et bilde.
Deretter må vi legge til et bilde i Eiendelermappe i XCode, a UIImageView
i begge kontrollerne og deres relative variabler av typen UIImage
.
Tast inn Assets.xcassets blå mappe og opprett en ny Bildesett.
Dra 3x, 2x og 1x bildene i sine relative bokser. Du er fri til å bruke et hvilket som helst bilde. Jeg har brukt en Apple-logo som et eksempel.
Gå tilbake til den første kontrolleren i Storyboard og dra a UIImageView
hvor som helst i den. Fest bildet ditt til det ved hjelp av Attributtsinspektørpanelet og sett det Modus til Aspect Fit.
Dra nå en ny UIImageView
inn i den andre kontrolleren og sett dens Modus til Aspect Fit. Ikke tilordne noe bilde til det, fordi vi vil passere bildet fra den første kontrolleren!
Høyreklikk på musen (eller hold nede Styre og klikk på museknappen) og dra en blå linje inn i den første kontrolleren .fort fil for å erklære din UIImageView
som en IBOutlet
. Gjør det samme også på den andre kontrolleren.
Nå må du legge til en UIImage
variabel til SecondVC.swift fil. Plasser den under intPassed
variabel.
var theImagePassed = UIImage ()
I viewDidLoad ()
, Ta tak i bildet passert av den første kontrolleren og vis den med imagePassed
.
imagePassed.image = theImagePassed
Endelig rediger du goButton ()
metode ved å legge til en linje med kode som vil passere bildet av den første kontrolleren inn i UIImageView
av den andre. Den fulle goButton ()
Metoden er nå som følger.
la myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") som! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt myVC.theImagePassed = myImage.image! navigationController? .pushViewController (myVC, animert: true)
Kjør appen, trykk på GÅ! knappen igjen, og du bør se noe slikt:
Takk for at du følger med! Jeg håper du er overrasket over hvor lett det er å bytte ut variabler og bilder mellom to kontrollere.
Vi har bygget en komplett guide for å hjelpe deg med å lære Swift, enten du er bare i gang med det grunnleggende eller du vil utforske mer avanserte emner.
Du kan også sjekke ut noen av våre andre opplæringsprogrammer på Xcode og Swift!