Segues i hurtig

tilslutning af visningskontrollere

brug afstoryboard for at forbinde en serieUIViewControllers sammen er et spørgsmål om at trække og slippe objekter påstoryboard.

først tilføjes den oprindelige visningscontroller til navigationscontroller

div>

følgende animerede GIF viser en, hvordan tre visningskontrollere kan placeres i en række, med en simpel segue tilføjet mellem hver enkelt, indstillet som en vis segue, hvilket betyder, at hver visningskontroller glider ind.

jeg har navngivet segues movetosecond og movetothird mellem den første og anden visningskontrollere og den anden og tredje visningskontrollere (henholdsvis).

Tilføj knapper med handlinger

Vi skal tilføje en knap til hver visningskontroller (for at skrive kode for at startesegue).

Dette er en relativt let træk og slip operation (kun den første knap vises her)

flytning af data: pass data gennem en segue

det er muligt at videregive data fra en visningskontroller til en anden ved hjælp af ensegue.

Skift til den første visningskontroller giver os følgende med den vigtige del, der kommenteres (Firstvisecontroller er klassen relateret til den første visningskontroller, som vist i den animerede gif ovenfor), og knaphandlingen udtrykkes.

Vi skal bruge dette til at segue og videregive oplysninger fra en visningskontroller til en anden ved at brugeperformSegue(withIdentifier: String, sender: Any?), værktøj det op i knappen handling.

Vi opdaterer handlingen for at kalde segue moveToSecond (som nævnt ovenfor). Nu i dette tilfælde behøver vi ikke at kende afsenderen, så dette kan være nul, men vi skal absolut være sikre på, at segue strengen er korrekt identificeret. Vi ved alle, at matchende strenge er en dårlig ide, men for at undgå det kan du se den dejlige skriftlige artikel, jeg tidligere har lavet.

men ved at trykke på uden Strengtilpasning bruger viprepare(for:sender:) til, Ja, forbered dig på segue. Den færdige metode ligner noget som følgende (som føjes til vores første visningscontroller):

nu er dette afhængig af, at vi har en dataSent ejendom i visningskontrolleren, vi besøger.

så vi kan placere dette i den temmelig smukt navngivneSecondViewController, selvom det kun er en simpel ejendom placeret inden for visningskontrollerklassen.

hvordan bedst at vise disse? Jeg går efter en animeret GIF.

flytning af data: Send Data tilbage gennem en delegeret

Hvad hvis du vil flytte data tilbage fra den anden visningscontroller, vil vi måske sende data tilbage til den første visningscontroller. En måde for dette er at bruge delegation.

for at gøre det oprettede vi en delegeret

Vi skal derefter overholde delegatet fra FirstViewController, som vi bare udskriver meddelelsen

nu inden for SecondViewController vi tilføjer delegeret som en egenskab, som jeg derefter har valgt at ringe under func viewWillDisappear(_ animated: Bool) så når visningen udskiftes, sendes meddelelsen

Der er et par ting der, så her er en animated gif

Unwind Segue

The unwind segue gives us something rather more.

To traverse from First View Controller to Second View Controller to Third View Controller is a stepwise process. However, an unwind segue gives the ability to move from Third View Controller to First View Controller, skipping the Second View Controller entirely.

Trin i slappe af overgang!

iFirstViewControllerder skal være enfunc unwindToFirst(_ unwindSegue: UIStoryboardSegue)funktion, der kører, når storyboardet flytter tilbage tilFirstViewController.

The storyboard section of this by control — dragging from a button to the top-right hand button “exit”

So difficult to show! Her er den animerede GIF

det er også muligt at videregive data gennem segue på samme måde som beskrevet ovenfor.

Opret din egen, brugerdefinerede Segue

en grund til at oprette din egensegue er at oprette en dejlig animation, når en visning præsenteres.

min animation? En Fade ud (repræsenterer vores fading fra livet, kærlighed).

den segue, vi opretter, er en brugerdefineret Segue (snarere end Vis segue ovenfor).

inden for denne segue skal vi vælge segueklassen og indstille en identifikator. Her kalder vi det customSegue.

dette bruger derefter en helt ny fil til at dække den nye MyCustomSegue klasse; jeg har ret kreativt kaldt denne fil mycustomsegue.Hurtig, der arver fra UIStoryboardSegue.

segues handling vil blive godt udført i udfør-funktionen med tilsidesættes. override func perform()

lad os tage perform() trin for trin. For at få kontrol over overgangen indstiller vi MyCustomSegue for at være transitioningDelegate. Øverst i klassen er der en bevaret reference private var selfRetainer: MyCustomerSegue? = nil, der kræves som UIKit beholder ikke forekomster af UIStoryboardSegue så der oprettes en stærk reference til det samme. Præsentationsstilen er indstillet til .fullScreen for at erstatte den originale visningskontroller.

transitioningDelegate giver metoder, der arbejder for præsentation og afskedigelse. Vi introducerer to klasser, Presenter og Dismisser for at håndtere dem, at de vedtager og NSObject.

præsentanten er ret let at skrive.

Her har vi præsentanten opfylder protokollen med funktionernefunc transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeIntervalogfunc animateTransition(using transitionContext: UIViewControllerContextTransitioning).

førstnævnte af disse er simpelthen en tid, 1.5 er et ret godt tidsrum for denne fade animation.

brevet er animationen; så fade vil være for den præsenterende visningskontroller fra gennemsigtig til uigennemsigtig (det er 0,0 til 1,0).

Hvad er det? Vil du have en legeplads med alt inkluderet? Jeg vil give dig det, så:

bedre vil være en hel Repo med arbejdet på det. Ok, det er nederst på denne side.

konklusion

Segues er ikke så lette som man måske tror, men de giver dig mulighed for at animere brugerens rejse gennem din App og skubbe data rundt.

hvem ville ikke have det?

Jeg håber, at denne vejledning har givet dig et skub i den rigtige retning for denne (omend sjove) måde at overføre din bruger og deres data omkring en App.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.