Video: Introduction to iOS, by Rhed Shi 2024
Hvis iPad-appen din har Modal-visning, må du legge til metoder til SettingsViewController. m (implementering) fil. Disse metodene styrer iPad-appens Modal-visning og utfører handlinger for brukerinngang.
Det hjelper å vite hva hver del av den malte koden gjør, og det er spesielt nyttig hvis du bruker # pragma-markeringer for å markere av hver seksjon slik at du raskt kan hoppe til den aktuelle delen når det er nødvendig. Følgende eksempelkode, som er en del av en app kalt Deep Thoughts, inneholder disse uttalelsene.
#import "SettingsViewController. H" #import "DeepThoughtsViewController. H" #import "Konstanter.h" @implementation SettingsViewController @synthesize delegate, wordsOfWisdom, skyvekontroll; #pragma mark - #pragma mark Se livssyklus / * // Den utpekte initialisatoren. Overstyr hvis du oppretter kontrolleren programmatisk og vil utføre tilpasning som ikke passer for viewDidLoad. - (id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {hvis (selv = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil])) {// Tilpasset initialisering} returner selv;} * / / * / / Implementer visningDidLad for å gjøre tilleggsoppsett etter at du har lastet opp visningen, typisk fra en nib. - (void) viewDidLoad {[super viewDidLoad];} * / - (void) viewDidLoad {[super viewDidLoad]; selv. utsikt. backgroundColor = [UIColor clearColor]; glidebryteren. verdi = + kMaxSpeed - ((DeepThoughtsViewController *) (selv. parentViewController)). hastighet;} #pragma mark - #pragma mark textField - (BOOL) textFieldShouldBeginEditing: (UITextField *) textField {[textField setReturnKeyType: UIReturnKeyNext]; returnere JA;} - (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder]; return YES;} - (void) textFieldDidEndEditing: (UITextField *) textField {wordsOfWisdom = textField. tekst;} #pragma mark - #pragma mark Controls - (IBAction) speedChanged: (id) avsender {[delegere changeSpeed: [(UISlider *) avsender verdi]];} - (IBAction) gjort {if (! [theTextField. isEqualToString: @ "]) wordsOfWisdom = theTextField. text; [self. delegate settingsViewControllerDidFinish: self];} #pragma mark - #pragma mark Orientering - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {// Overriden for å tillate orientering. YES;} #pragma mark - #pragma markering Hukommelsesadministrasjon - (void) didReceiveMemoryWarning {// Utgir visningen hvis den ikke har en overvåkning. [Super didReceiveMemoryWarning]; // Utgiv eventuelle bufret data, bilder osv. Som er ' t i bruk.} - (void) viewDidUnload {[super viewDidUnload]; // Slett eventuelle beholdte undervisninger av hovedvisningen. // e. g. selv. myOutlet = nil;} - (void) dealloc {[super dealloc];} @end
Ok, her er hva den forrige koden gjør:
-
Selv om @property-erklæringen i headerfilen forteller kompilatoren at det er tilgangsmetoder, trenger du en @synthesize-setning for en egenskap for å lage disse metodene. @synthesize erklæringen forteller kompilatoren å lage tilgangsmetoder for deg - en for hver @ eiendomserklæring.
-
Metoden ViewDidLoad angir bakgrunnen og hastigheten for skyvekontrollen (som styrer hastigheten på ordene ruller ned på iPad-skjermen).
-
UITextFieldDelegate-protokollen definerer meldingene som sendes til en tekstfeltdelegate som en del av sekvensen for redigering av teksten. Når brukeren utfører en handling som vanligvis starter en redigeringsøkt, kaller tekstfeltet textFieldShouldBeginEditing: metoden først for å se om redigering egentlig skal fortsette. I de fleste tilfeller vil du bare returnere JA fra denne metoden slik at redigering kan fortsette.
-
Tekstfeltet kaller textFieldShouldReturn: metoden når brukeren tapper returknappen på tastaturet for å finne ut om det skal behandle returet. Du kan bruke denne metoden til å implementere noen tilpasset atferd når Retur-knappen er tappet, men for dine formål returnerer du bare JA (som er standard), selv om du kunne returnere NO for å ignorere Retur-knappen.
-
Etter å ha sagt "ja" til dette og det, skjer den virkelige handlingen med textFieldDidEndEditing: metoden, som kalles etter at tekstfeltet trekker sin første responderstatus for å fortelle delegaten at redigering har stoppet for det angitte tekstfeltet, så at du nå har de redigerte ordeneOfWisdom (som er ordene som ruller ned på iPad-skjermen i denne appen).
-
Deretter gir du en speedChanged-metode (av typen IBAction) for å håndtere en endring i hastighet, som bruker delegatets changeSpeed-metode for å endre hastigheten på animasjonen umiddelbart i visningen når brukeren endrer den i Modal-visningen.
-
Du leverer også en ferdig metode som håndterer muligheten for et tomt tekstfelt. Koden tilordner tekstfeltets tekst til wordsOfWisdom bare hvis feltet er ikke theTextField. teksten isEqualToString: @ ".