Swift is een geweldige programmeertaal die Apple introduceerde tijdens WWDC 2014, en nu gebruiken bijna alle Apple-ontwikkelaars het om iOS- en OS X-applicaties te programmeren. Het is zeer flexibel, gemakkelijker te gebruiken dan zijn voorganger Objectief C en het bespaart u kostbare minuten bij het coderen met XCode.
Dit is een krachtige en intuïtieve programmeertaal voor iOS, OS X, tvOS en watchOS. Het schrijven van Swift-code is interactief en leuk, de syntaxis is beknopt maar toch expressief en Swift bevat moderne functies waar ontwikkelaars van houden. Als je Swift al niet gebruikt, bekijk dan eens enkele van onze andere geweldige tutorials over de Swift-taal:
Meestal, wanneer u een iOS-app met meer dan één scherm maakt, moet u gegevens doorgeven tussen uw View Controllers zodat ze inhoud kunnen delen zonder ze onderweg kwijt te raken. In deze tutorial leer je hoe je dat moet doen. We zullen een gebruiken Draad
, een Geheel getal
, en ook een UIImage
, dus blijf lezen - u zult versteld staan hoe gemakkelijk deze taak bij Swift is.
Maak eerst een nieuw XCode-project. Kiezen Toepassing enkele weergave en noem het project zoals je maar wilt. U zult een vinden ViewController.swift bestand in de bestandenlijst op het linkerpaneel en een controllerinterface in het storyboard.
Begin door een nieuwe View Controller vanuit de Objectbibliotheek naar je Storyboard te slepen.
Sluit je eerste controller in een NavigationController
, dus wanneer u naar de volgende controller duwt, geeft de bovenste balk een standaard weer Terug knop. Selecteer nu de eerste controller in Storyboard en klik op Editor > Insluiten in ... > Navigatiecontroller.
Voeg nu een toe UILabel
en een UIButton
naar de controller. Je kunt ze vinden in de Objectbibliotheek en ze naar je eerste controller slepen. Dubbelklik vervolgens op de UILabel
en typ de tekst die u wilt doorgeven aan de tweede controller. Ik heb zojuist zijn tekst ingesteld op "Tekst om door te geven".
Sleep op de tweede controller een nieuwe UILabel
waar je maar wilt en laat de tekst gewoon zoals hij is.
We moeten nu een nieuw maken .snel bestand en bevestig het aan onze tweede controller. Dus klik met de rechtermuisknop in het lijstvenster met bestanden aan de linkerkant, klik Nieuw bestand… , kiezen Cocoa Touch Class van de iOS-bron categorie, klik volgende, en benoem de nieuwe view controller SecondVC
. (Spaties zijn niet toegestaan in de naam en deze moet beginnen met een hoofdletter.)
Nu moet je de tweede Controller in Storyboard koppelen aan je nieuwe SecondVC.swift het dossier. Selecteer de gele cirkel boven aan de controller, klik op de Identificeer inspecteur paneelpictogram aan de rechterkant van het XCode-venster en typ de naam van uw nieuwe .snel bestand in de Klasse en StoryboardID velden.
Splits het XCode-venster in twee delen door op de te klikken Assistent redacteur knop in de rechterbovenhoek. Nu heb je het Storyboard aan de linkerkant en het is relevant .snel bestand aan de rechterkant.
Verbind de UILabel
als een IBOutlet
en de UIButton
als een IBAction
aan jouw .snel bestand door de rechtermuisknop ingedrukt te houden (of de Controle toets en muisknop) over die aanzichten en de blauwe lijn rechtsonder de slepen klasse
verklaring.
Als je de muis loslaat, kun je de uitlaat van het label een naam geven en de actie van de knop in de kleine grijze pop-up die verschijnt. Klik voor de knop op de kleine keuzelijst met invoervak die zegt stopcontact en schakel het in Actie, omdat we het nodig hebben om een functie te zijn, geen uitlaatklep.
Als je klaar bent met het verbinden van alle views, houd je je XCode-venster opgesplitst in twee secties en selecteer je de eerste controller van het Storyboard. Nu zal de rechterkant het ViewController.swift bestand en je bent klaar om er een code in te schrijven.
Plaats de volgende code in de goButton ()
methode.
laat myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") als! SecondVC myVC.stringPassed = myLabel.text! navigationController? .pushViewController (myVC, geanimeerd: true)
De eerste regel duidt de SecondVC
controller van het storyboard.
De tweede regel is eigenlijk de kern van deze tutorial, omdat deze de mylabel
's tekst naar de UILabel
we hebben in de SecondVC
controller. Het doet dat door een Draad
dat we later zullen verklaren.
Dan tenslotte, we duwen gewoon het zicht naar de volgende controller.
Selecteer nu de andere controller in Storyboard en voeg deze variabele direct onder de SecondVC
klasse verklaring:
var stringPassed = ""
Laat de app de waarde van deze variabele toewijzen aan secondLabel
met de volgende regel code in de viewDidLoad ()
methode.
secondLabel.text = stringPassed
U bent klaar! Voer de app uit op de iOS Simulator of op een echt apparaat, tik op GAAN! en je zou iets als dit moeten krijgen:
Zoals u kunt zien, de Tekst om door te geven Draad
is met succes doorgegeven aan ons SecondVC
controleur.
Laten we nu proberen een geheel getal (Int
in Swift) en deel het tussen de twee controllers.
Voeg de volgende variabele toe aan de ViewController.swift
, direct onder de mylabel
Verklaring van Outlet.
var myInt = Int ()
Initialiseer de waarde in viewDidLoad ()
:
override func viewDidLoad () super.viewDidLoad () myInt = 5
Bewerk vervolgens de goButton ()
functie door een exemplaar toe te voegen dat ook door ons wordt gehaald myInt
waarde voor de volgende controller, als volgt:
laat myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") als! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt navigationController? .pushViewController (myVC, geanimeerd: true)
Ga nu naar binnen SecondVC.swift en voeg eerst een variabele van het type toe Int
die het nummer krijgt dat we van de eerste controller sturen. Plaats deze regel code direct onder de stringPassed
veranderlijk.
var intPassed = Int ()
Bewerk de secondLabel
regel code als volgt:
secondLabel.text = stringPassed + "my Int: \ (intPassed)"
Dat is alles. Start de app opnieuw en tik op de GAAN! knop, en je zou iets als dit moeten krijgen:
Dus nu zie je hoe eenvoudig het is om variabelen van de ene controller naar de andere te sturen. Het laatste dat ik je wil laten zien, is hoe je een afbeelding kunt doorgeven.
Vervolgens moeten we een afbeelding toevoegen aan de Middelenmap in XCode, a UIImageView
in beide controllers en hun relatieve variabelen van het type UIImage
.
Ga naar Assets.xcassets blauwe map en maak een nieuwe Afbeelding instellen.
Versleep de 3x, 2x en 1x afbeeldingen naar hun relatieve vakken. Je bent vrij om elke afbeelding te gebruiken. Ik heb een Apple-logo gebruikt als voorbeeld.
Ga terug naar de eerste controller in Storyboard en sleep een UIImageView
overal in het. Voeg uw afbeelding eraan toe met behulp van het inspectiepaneel Kenmerken en stel deze in mode naar Aspect Fit.
Sleep nu een nieuw UIImageView
in de tweede controller en stel deze in mode naar Aspect Fit. Wijs er echter geen afbeelding aan toe, omdat we de afbeelding van de eerste controller doorgeven!
Klik met de rechtermuisknop op de muis (of houd ingedrukt Controle en klik op de muisknop) en sleep een blauwe lijn naar de eerste controller .snel bestand om uw te declareren UIImageView
als een IBOutlet
. Doe hetzelfde ook op de tweede controller.
Nu moet je een toevoegen UIImage
variabele voor de SecondVC.swift het dossier. Plaats het onder de intPassed
veranderlijk.
var theImagePassed = UIImage ()
In viewDidLoad ()
, pak het beeld dat door de eerste controller is gepasseerd en geef het weer imagePassed
.
imagePassed.image = theImagePassed
Bewerk tenslotte de goButton ()
methode door een regel code toe te voegen die de afbeelding van de eerste controller doorgeeft aan de UIImageView
van de tweede. De volledige goButton ()
methode is nu als volgt.
laat myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") als! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt myVC.theImagePassed = myImage.image! navigationController? .pushViewController (myVC, geanimeerd: true)
Voer de app uit, tik op de GAAN! knop opnieuw, en je zou zoiets als dit moeten zien:
Bedankt voor het volgende! Ik hoop dat je verbaasd bent over hoe gemakkelijk het is om variabelen en afbeeldingen uit te wisselen tussen twee controllers.
We hebben een complete gids samengesteld om je te helpen snel te leren, of je nu net begint met de basis of als je meer geavanceerde onderwerpen wilt verkennen.
Je kunt ook enkele van onze andere tutorials bekijken over Xcode en Swift!