Transmiterea datelor între controale în Swift

Despre Swift

Swift este un limbaj minunat de programare pe care Apple la introdus în timpul WWDC 2014 și acum aproape toți dezvoltatorii Apple îl folosesc pentru a programa aplicații iOS și OS X. Este foarte flexibil, mai ușor de utilizat decât predecesorul său Obiectiv C, și vă va salva câteva minute prețioase atunci când codificați cu XCode.

Acesta este un limbaj de programare puternic și intuitiv pentru iOS, OS X, tvOS și watchOS. Scrierea codului Swift este interactivă și distractivă, sintaxa este concisă dar expresivă, iar Swift include caracteristicile moderne ale dezvoltatorilor. Dacă nu utilizați deja Swift, verificați câteva din celelalte tutoriale ale noastre în limba Swift:

Despre acest tutorial

De cele mai multe ori, atunci când construiți o aplicație iOS cu mai multe ecranuri, trebuie să transmiteți date între controlorii dvs. de vizualizare, pentru ca aceștia să poată să partajeze conținutul fără a le pierde de-a lungul drumului. În acest tutorial, veți învăța cum să faceți acest lucru. Vom folosi a Şir, un Întreg, și, de asemenea, a UIImage, așa că continuați să citiți - veți fi uimiți de cât de ușor este această slujbă cu Swift.

Instalarea proiectului XCode

Mai întâi de toate, creați un nou proiect XCode. Alege Vizualizare individuală și numiți proiectul, oricum doriți. Veți găsi a ViewController.swift fișier din lista de fișiere de pe panoul din stânga și o interfață a controlerului din Storyboard.

Începeți prin tragerea unui nou controler de vizualizare din biblioteca de obiecte în Storyboard.

Încorporați primul controler în a NavigationController, astfel încât atunci când apăsați pe următorul controler, bara de sus va afișa o valoare implicită Înapoi buton. Acum, selectați primul controler din Storyboard și faceți clic pe Editor > Încorporați în ... > Controller de navigație.

Acum adaugati a UILabel și a UIButton la controler. Puteți să le găsiți în biblioteca de obiecte și să le glisați în primul controler. Apoi faceți dublu clic pe UILabel și tastați textul pe care doriți să-l transmiteți celui de-al doilea controler. Tocmai mi-am setat textul la "Text pentru a trece".

Pe cel de-al doilea controler, trageți un nou UILabel oriunde vrei și lasă textul așa cum este.

Acum trebuie să creăm un nou .rapid fișier și o atașați celui de-al doilea controlor. Deci, faceți clic dreapta pe panoul listei fișierelor din stânga, faceți clic pe Fișier nou ... , Selectați Cocoa Touch Class de la Sursa iOS categorie, faceți clic pe Următor →, și numele noului controler de vizualizare SecondVC. (Nu este permisă nicio spațiere în nume și trebuie să înceapă cu o literă mare.)

Acum trebuie să conectați cel de-al doilea Controler în Storyboard cu noul dvs. SecondVC.swift fişier. Selectați cercul galben din partea de sus a controlerului, faceți clic pe Identificați inspectorul panou din partea dreaptă a ferestrei XCode și introduceți numele noului dvs. .rapid fișier în Clasă și StoryboardID câmpuri.

Conectarea vizualizărilor la fișierele .swift

Împărțiți fereastra XCode în două părți făcând clic pe Editor asistent în colțul din dreapta sus. Acum veți avea Storyboard din partea stângă și cea relevantă .rapid dosar din partea dreaptă.

Conectați UILabel ca un IBOutlet si UIButton ca un IBAction pentru dumneavoastră .rapid fișier ținând apăsat butonul drept al mouse - ului (sau Control cheia și butonul mouse-ului) peste aceste vizualizări și tragerea liniei albastre chiar sub clasă declaraţie.

Când eliberați mouse-ul, puteți da un nume la priza etichetei și la acțiunea butonului în meniul pop-up gri care apare. Pentru buton, asigurați-vă că faceți clic pe caseta de combo mică care spune priză și treci la el Acțiune, pentru că avem nevoie să fie o funcție, nu o ieșire.

După ce ați terminat conectarea tuturor vizualizărilor, păstrați fereastra XCode împărțită în două secțiuni și selectați primul controler din Storyboard. Acum, partea dreaptă va arăta ViewController.swift fișier și veți fi gata să scrieți un cod în el.

Să codificăm!

Plasați următorul cod în goButton () metodă.

lasati myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") ca! SecondVC myVC.stringPassed = myLabel.text! navigatorController? .pushViewController (myVC, animat: true)

Prima linie reprezintă instanța SecondVC controler din Storyboard. 

A doua linie este, de fapt, nucleul acestui tutorial, deoarece îi alocă mylabella textul textului UILabel am plasat în SecondVC controlor. Ea face asta prin a stabili a Şir că suntem gong să declare mai târziu.

În final, pur și simplu împingem punctul de vedere la controlerul următor.

Trecerea unui șir

Acum, selectați celălalt controler din Storyboard și adăugați această variabilă chiar sub SecondVCdeclarația de clasă:

var stringPased = ""

Faceți aplicația să atribuie valoarea acestei variabile secondLabel cu următoarea linie de cod în viewDidLoad () metodă.

secondLabel.text = stringPassed

Ați terminat! Rulați aplicația pe Simulatorul iOS sau pe un dispozitiv real, apăsați MERGE! și ar trebui să obțineți ceva de genul:

După cum puteți vedea, Text pentru a trece Şir a fost trecut cu succes la noi SecondVC controlor.

Trecerea unui întreg

Acum să încercăm să adăugăm un întreg (Int în Swift) și partajați-le între cele două controlere. 

Adăugați următoarea variabilă la ViewController.swift, chiar sub mylabel Declarația Outlet.

var myInt = Int ()

Inițializați valoarea în viewDidLoad ():

override func vizualizareDidLoad () super.viewDidLoad () myInt = 5

Apoi, editați goButton () funcție prin adăugarea unei instanțe care va trece și noi Myint valoare pentru următorul controler, după cum urmează:

lasati myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") ca! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt navigatorController? .pushViewController (myVC, animat: true)

Acum intrați SecondVC.swift și mai întâi adăugați o variabilă de tip Int care va primi numărul pe care îl vom trimite de la primul controlor. Plasați această linie de cod chiar sub stringPassed variabil.

var intPassed = Int ()

Editați secondLabel linia de cod, după cum urmează:

secondLabel.text = stringPassed + "Int: \ (intPassed)"

Asta e tot. Rulați aplicația din nou și apăsați pe MERGE! buton, și ar trebui să obțineți ceva de genul:

Deci, acum vedeți cât de ușor este să treceți variabilele de la un controler la altul. Ultimul lucru pe care aș vrea să-ți arăt este cum să treci o imagine.

Trimiterea unei imagini

Apoi trebuie să adăugăm o imagine în bunurifolder în XCode, a UIImageView în ambele controale și variabilele lor relative de tip UIImage.

Introduceți Assets.xcassets albastru și creați un nou Setarea imaginilor.

Trageți imaginile de 3x, 2x și 1x în casetele lor relative. Sunteți liber să utilizați orice imagine. Am folosit o siglă Apple ca exemplu.

Reveniți la primul controler din Storyboard și trageți a UIImageView oriunde în ea. Atașați-vă imaginea la ea utilizând panoul Inspectorul atributelor și setați-l mod la Aspect Fit.

Trageți acum un nou UIImageView în cel de-al doilea controler și setați-l mod la Aspect Fit. Nu-i atribuiți nici o imagine, totuși, pentru că vom trece imaginea de la primul controler!

Faceți clic dreapta pe mouse (sau țineți apăsat Control și faceți clic pe butonul mouse-ului) și trageți o linie albastră în primul controler .rapid fișier pentru a vă declara UIImageView ca un IBOutlet. Faceți același lucru și pe al doilea controler.

Acum trebuie să adăugați a UIImage variabilă la SecondVC.swift fişier. Plasați-l sub intPassed variabil.

var theImagePassed = UIImage ()

În viewDidLoad (), apucați imaginea trecută de primul controler și afișați-o imagePassed.

imagePassed.image = theImagePassed

În cele din urmă, editați goButton () adăugând o linie de cod care va trece imaginea primului controler în UIImageView al celui de-al doilea. În totalitate goButton () metoda este acum după cum urmează.

lasati myVC = storyboard? .instantiateViewControllerWithIdentifier ("SecondVC") ca! SecondVC myVC.stringPassed = myLabel.text! myVC.intPassed = myInt myVC.theImagePassed = myImage.image! navigatorController? .pushViewController (myVC, animat: true)

Rulați aplicația, apăsați pe MERGE! butonul din nou, și ar trebui să vedeți ceva de genul:

Vă mulțumim că ați urmat! Sper că sunteți uimit de cât de ușor este de a schimba variabile și imagini între doi controlori. 

Aflați Swift

Am construit un ghid complet pentru a vă ajuta să învățați Swift, indiferent dacă începeți doar cu elementele de bază sau doriți să explorați subiecte mai avansate.

Puteți, de asemenea, verifica unele dintre celelalte tutoriale ale noastre pe Xcode și Swift!

Cod