Segues in Swift

het verbinden van Beeldcontrollers

met behulp van de storyboard om een reeks van UIViewControllers aan elkaar te koppelen is een kwestie van slepen en neerzetten van objecten op de storyboard.

ten Eerste de eerste view-controller is toegevoegd aan Navigatie-Controller

De volgende GIF-animatie toont hoe de drie weergave-controllers kunnen worden geplaatst in een rij, met een eenvoudige segue toegevoegd tussen elkaar, de set als een show segue, wat betekent dat elke view controller dia ‘ s in.

Ik heb de naam van de segues moveToSecond en moveToThird tussen de eerste en de tweede weergave-controllers en de tweede en derde bekijk controllers (respectievelijk).

knoppen toevoegen met acties

We moeten een knop toevoegen voor elke weergavecontroller (om code te schrijven om de seguete starten).

Dit is een relatief eenvoudig slepen-en-neerzetten (alleen de eerste knop is hier afgebeeld)

het Verplaatsen van Gegevens: Doorgeven van Gegevens Via een Segue

is Het mogelijk om data van het ene regelaar naar de andere met behulp van een segue.

overschakelen naar de eerste weergavecontroller geeft ons het volgende, met het belangrijke deel dat wordt becommentarieerd (FirstViewController is de klasse gerelateerd aan de eerste weergavecontroller, zoals weergegeven in de geanimeerde gif hierboven), en de knop actie wordt uitgedrukt.

We gaan dit gebruiken om informatie van de ene weergavecontroller naar de andere door te geven door performSegue(withIdentifier: String, sender: Any?) te gebruiken, het op te tooling in de knop Actie.

We werken de actie bij om de segue movetoseconde aan te roepen (zoals hierboven genoemd). In dit geval hoeven we de afzender niet te kennen, dus dit kan nihil zijn, maar we moeten er absoluut zeker van zijn dat de segue string correct is geïdentificeerd. We weten allemaal dat matching Strings een slecht idee is, maar om het te vermijden kun je het mooie geschreven artikel zien dat ik eerder heb gemaakt.

maar door aan te drukken zonder tekenreeks matching, gebruiken we prepare(for:sender:) om, goed, voor te bereiden op de segue. De afgewerkte methode ziet er ongeveer als de volgende (die is toegevoegd aan onze eerste weergave controller):

nu vertrouwt dit erop dat we een dataSent eigenschap hebben in de weergavecontroller die we bezoeken.

dus we kunnen dit in de vrij aantrekkelijk benoemde SecondViewController plaatsen, hoewel het slechts een eenvoudige eigenschap is die binnen de klasse view controller is geplaatst.

Hoe kunt u deze het beste weergeven? Ik ga voor een geanimeerde GIF.

gegevens verplaatsen: Geef gegevens terug door een gedelegeerde

Wat als u gegevens terug wilt verplaatsen van de tweede weergavecontroller, kunnen we gegevens terugsturen naar de eerste weergavecontroller. Een manier hiervoor is het gebruik van delegatie.

om dit Te doen, hebben we een gemachtigde

We dan nodig om te voldoen aan de gemachtigde van de FirstViewController, waarmee we net print uit het bericht

binnen SecondViewController we in de afgevaardigde als een eigenschap, die heb ik toen gekozen om te bellen tijdens de func viewWillDisappear(_ animated: Bool) dus wanneer de weergave is vervangen het bericht is verzonden

Er zijn een paar dingen die er zijn, dus hier is een 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.

Stap in de ontspannen segue!

In de FirstViewController moet er een func unwindToFirst(_ unwindSegue: UIStoryboardSegue) functie zijn die zal worden uitgevoerd wanneer het storyboard terugkeert naar de FirstViewController.

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

So difficult to show! Hier is de geanimeerde GIF

het is ook mogelijk om gegevens door de Segue te geven op een vergelijkbare manier als hierboven beschreven.

maak uw eigen, aangepaste Segue

een reden om uw eigen segue aan te maken is om een mooie animatie te maken wanneer een weergave wordt gepresenteerd.

mijn animatie? Een Fade Out (onze fading uit het leven, liefde).

De segue die we maken is een aangepaste Segue (in plaats van de bovenstaande segue tonen).

binnen deze Segue noodzaak om de klasse van de Segue te selecteren, en stel een identifier. Hier noemen we het customSegue.

Dit gebruikt een geheel nieuw bestand voor de nieuweMyCustomSegueklasse; ik heb dit bestand nogal creatief mycustomsegue genoemd.swift, dat erft van UIStoryboardSegue.

de actie van de segue zal goed worden uitgevoerd in de functie uitvoeren met is overschreven. override func perform()

laten we stap voor stap perform() nemen. Om controle over de overgang te krijgen stellen we MyCustomSegue in als transitioningDelegate. Aan het begin van de klasse is er een behouden referentie private var selfRetainer: MyCustomerSegue? = nil die vereist is omdat UIKit geen exemplaren van UIStoryboardSegue behoudt, zodat een sterke verwijzing naar hetzelfde wordt gemaakt. De presentatiestijl is ingesteld op .fullScreen om de originele weergavecontroller te vervangen.

de transitioningDelegate biedt methoden die werken voor de presentatie en ontslag. We zullen twee klassen introduceren, Presenter en Dismisser om met deze klassen om te gaan, die UIViewControllerAnimatedTransitioning en NSObjectaannemen.

de presentator is vrij eenvoudig te schrijven.

Hier hebben we de presentator voldoet aan het protocol met de functies func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval en func animateTransition(using transitionContext: UIViewControllerContextTransitioning).

de eerste hiervan is gewoon een tijd, 1.5 is een vrij mooie tijdspanne voor deze fade animatie.

de letter is de animatie; de fade is dus voor de presenterende weergavecontroller van doorschijnend naar ondoorzichtig (dat is 0.0 tot 1.0).

Wat is dat? Wil je een speeltuin met alles inbegrepen? Ik geef je dat, dan:

beter zal een hele Repo met het werk op. Ok, dat staat onderaan deze pagina.

conclusie

Segues zijn niet zo eenvoudig als men zou denken, maar ze laten je toe de reis van de gebruiker door je App te animeren en data te pushen.

wie zou dat niet willen?

Ik hoop dat deze gids heeft gegeven u een duwtje in de goede richting voor deze (zij het leuke) manier van het overbrengen van uw gebruiker en hun gegevens rond een App.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.