iOS Fundamentals: UIAlertView og UIAlertController
23
Del
3
Del
Dette Cyber mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av.
Selv om du bare har dyppet tærne inn i verden av iOS utvikling, du nesten helt sikkert vet om UIAlertView. Den UIAlertView klasse har et enkelt grensesnitt og brukes til å presentere modal varsler.
Apple har frarådet UIAlertView i iOS 8 skjønt. Per iOS 8, er det anbefalt å bruke UIAlertController klassen å presentere tiltaks ark og modale varsler. I denne rask spiss, vil jeg vise deg hvor enkelt det er å gå over fra UIAlertView til UIAlertController.
1. Prosjektet Setup
Launch Xcode 6.3+ og opprette et nytt prosjekt basert på Enkel visning Application mal.
Navn prosjektet varsler, satt språk til Swift, og satt enheter til iPhone. Fortell Xcode hvor du ønsker å lagre prosjektfiler og klikk på Opprett.
La oss begynne med å legge en knapp for å utløse et varsel visning. Åpne Main.storyboard og legge til en knapp til visningen kontrolleren syn. Sett knappen tittel til Show Alert og legge de nødvendige føringer til knappen for å holde det på plass.
Åpne ViewController.swift og legge en handling til klassen gjennomføring. La handlingen implementering tom for tiden. Revidere Main.storyboard og koble utsikten kontrollerens showAlert handling med knappens Touch Up Inside hendelsen
IBAction func showAlert (avsender: AnyObject). {}
2. UIAlertView
La oss starte med å vise et varsel utsikt bruker UIAlertView klassen. Som jeg nevnte, er grensesnittet av UIAlertView klassen veldig enkelt. Operativsystemet tar seg av nitty sandete detaljer. Dette er hva den oppdaterte gjennomføringen av showAlert handlingen ser ut
IBAction func showAlert (avsender: AnyObject). {//Initial Alert Vis la alertView = UIAlertView (tittel: "Alert", meldingen: "Er du ok" , delegat: selvtillit, cancelButtonTitle: "Ja", otherButtonTitles: "Nei") //Konfigurer Alert Vis alertView.tag = 1 //Show Alert Vis alertView.show ()}
initialisering er grei. Vi tilbyr en tittel og en melding, passere i en delegat objekt, en tittel på avbryt-knapp, og titler for noen andre knapper vi ønsker å inkludere.
delegat objektet må samsvare med UIAlertViewDelegate protokollen . Fordi utsikten controller vil fungere som en våken visningens delegat, må ViewController klassen til å samsvare UIAlertViewDelegate protokollen
importere UIKitclass ViewController. UIViewController, UIAlertViewDelegate {...}
Metodene for UIAlertViewDelegate protokollen er definert som valgfri. Metoden du bruker oftest er alertView (_: clickedButtonAtIndex :). Denne metoden startes når brukeren kraner en av varselet vise knappene. Dette er hva gjennomføringen av alertView (_: clickedButtonAtIndex :) metoden kan se ut som
func alertView (alertView. UIAlertView, clickedButtonAtIndex buttonIndex: Int) {if alertView.tag == 1 {if buttonIndex == 0 {println ("Brukeren er greit.")} else {println ("Brukeren er ikke greit.")}}}
Bygg og kjøre programmet i iOS Simulator for å se om alt fungerer som forventet. Anmeldelser
3. UIAlertController
Grensesnittet UIAlertController er svært forskjellig fra UIAlertView, men Apples motivasjon til å gå over til den UIAlertController klassen er fornuftig når du har brukt det et par ganger. Det er en elegant grensesnitt som vil virke kjent.
Den første fordelen av å bruke UIAlertController klassen er fraværet av en delegat protokoll for å håndtere brukermedvirkning. Dette betyr at vi bare trenger å oppdatere gjennomføringen av showAlert handling. Ta en titt på den oppdaterte gjennomføringen nedenfor
IBAction func showAlert. (Avsender: AnyObject) {//Initial Alert Controller la alertController = UIAlertController (tittel: "Alert", meldingen: "Er du ok?", PreferredStyle. Alert) //Initial Handlinger la yesAction = UIAlertAction (tittel: "Ja", stil: .DEFAULT) {(handling) - > Void i println (". Brukeren er greit")} la noAction = UIAlertAction (tittel: "Nei", stil: .DEFAULT) {(handling) - > Ugyldig i println ("Brukeren er ikke greit.")} //Legg Handlinger alertController.addAction (yesAction) alertController.addAction (noAction) //Present Alert Controller self.presentViewController (alertController, animert: true, ferdigstillelse: null)}
Den initialisering er ganske enkelt. Vi passerer i en tittel, en melding, og viktigst av alt, satt den foretrukne stil til UIAlertControllerStyle.Alert eller .Alert for kort. Den foretrukne stil forteller operativsystemet hvis varselet kontrolleren må presenteres som en handling ark, .ActionSheet, eller en modal varsling, .Alert.
I stedet for å gi titler for knapper og håndtering brukermedvirkning gjennom UIAlertViewDelegate protokollen, legger vi handlinger til vakt kontrolleren. Enhver handling er en forekomst av UIAlertAction klassen. Opprette en UIAlertAction er enkel. Den initializer aksepterer en tittel, en stil, og et behandlingsprogram. Stilen argument er av typen UIAlertActionStyle. Behandleren er en nedleggelse, akseptere UIAlertAction objekt som sitt eneste argument.
Bruk av handlers i stedet for en delegat protokollen gjør gjennomføringen av en modal varsling mer elegant og lettere å forstå. Det er ikke lenger behov for tagging varselet utsikt hvis du arbeider med flere modale varsler.
Før vi presenterer varselet kontrolleren til brukeren, legger vi de to handlingene ved å ringe addAction (_ :) på alertController gjenstand. Legg merke til at rekkefølgen på knappene på modal varsling bestemmes av rekkefølgen handlingene er lagt til varsling kontrolleren.
Fordi UIAlertController klassen er en UIViewController underklasse, presentere varselet kontrolleren til brukeren så enkelt som å ringe presentViewController (_: animert. ferdigstillelse :), passerer i varselet kontrolleren som første argument
4. UIActionSheet
Ikke overraskende, Apple også frarådet den UIActionSheet klassen og UIActionSheetDelegate protokollen. Per iOS 8, er det anbefalt å bruke UIAlertController klassen å presentere en handling ark.
Presentere en handling ark er identisk med å presentere en modal varsel. Den eneste forskjellen er varselet kontrolleren preferredStyle eiendom, som må settes til UIAlertControllerStyle.ActionSheet, eller .ActionSheet for kort, for action ark.
Konklusjon
Selv om UIAlertView og UIActionSheet er foreldet i iOS 8, kan du fortsette å bruke dem i overskuelig fremtid. Grensesnittet av UIAlertController klasse, er imidlertid en klar forbedring. Den legger enkelhet og samordner API for å presentere modale varsler og tiltaks ark. Og fordi UIAlertController er en UIViewController underklasse, vil API allerede virke kjent.