Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Alertvisninger avbryter brukerne mens de bruker en iOS-app, og krever at de stopper hva de gjør, og enten avviser varselet eller velger en handling. Vær oppmerksom på at en Alert-visning vises øverst på innholdet på en app-skjerm. Tross alt er varselets formål å fange brukerens oppmerksomhet.
Figuren viser en Alert visning fra en Tic-Tac-Toe app. Hvis du klikker Ja, slettes det gamle spillet og starter en ny. Ved å klikke No avslutter spillet.
Som med de fleste iOS-visningene, bruker du delegasjon til å implementere et varsel. Spesifikasjonen til delegaten er imidlertid gjort programmatisk - det vil si ikke gjennom grensesnittbyggeren, som for knapper. Følgende kode illustrerer hvordan du gjør det (hentet fra GameView-klassen, implementert i TTTGameView. M og. H):
- (void) promptToProceed: (TTTGameSessionViewController *) GameViewController {UIAlertView * varsel = [[UIAlertView alloc] init]; [varsel setTitle: @ "Game Over!"]; [varsel settMessage: @ "Spill et annet spill?"]; [varsling addButtonWithTitle: @ "Yes"]; [varsling addButtonWithTitle: @ "No"]; [advarsel setDelegate: GameViewController]; [varslingsfremvisning];}
Etter varsling er instansiert på den typiske Objective-C-måten (ved hjelp av allokering etterfulgt av init), blir tittel- og meldingsegenskapene innstilt, og knappene Ja og Nei legges til som undervisninger til Alert-visningen ved hjelp av metoden addButtonWithTitle. Like før varslingen er vist (ved hjelp av visningsmetoden), settes spillkontroll-kontrolleren som delegat til varselet ved hjelp av setDelegate-metoden.
Fordi kontrollpanelet for spillsesjon er satt som delegat til varselet, utløses en handling i klassen for spillesesjonskontroll når en knapp av varselet berøres.
Enhver delegert til varselet må implementere UIAlertViewDelegate-protokollen, og derfor en metode som heter klikketButtonAtIndex som delegeringsaksjonsmetode for varselet. Sjekk TTTGameSessionViewController. m, og du vil se denne klikketButtonAtIndex-metoden, som også vises i følgende kode:
- (void) alertView: (UIAlertView *) alarmVis på clickedButtonAtIndex: (NSInteger) buttonIndex {if (buttonIndex == 0) {[selfplayNewGame];} else if (buttonIndex == 1) {return;}}
Ja-knappen ble lagt først, så indeksen er 0. Som du kan se, begynner et nytt spill ved å trykke på denne knappen. No-knappen ble lagt til andre, så indeksen er 1. Berøring gjør det ingenting.