Hvordan legge Metoder til en Modal View Controller i din iPad App

February 4  by Eliza

Hvis din iPad app har en Modal visning, må du legge til metoder til SettingsViewController.m (implementering) fil. Disse metodene administrere iPad app Modal utsikt og utføre brukerinngangs handlinger.

Det hjelper å vite hva hver del av malen-forut koden gjør, og det er spesielt nyttig hvis du bruker # pragma mark uttalelser å merke av hver del, slik at du raskt kan hoppe til den aktuelle delen når det trengs. Følgende eksempel kode, som er en del av en app som heter Deep Thoughts, inkluderer disse uttalelsene.

#import "SettingsViewController.h"
#import "DeepThoughtsViewController.h"
#import "Constants.h"
implementation SettingsViewController
synthesize delegat, wordsOfWisdom, glidebryteren;
#pragma mark -
#pragma mark Vis livssyklus
/ *
// Den utpekte initializer. Styre hvis du oppretter kontrolleren programmatisk og ønsker å utføre tilpasning som ikke er egnet for viewDidLoad.
- (Id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {
if ((selv = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil])) {
// Custom initialisering
}
tilbake selv;
}
* /
/ *
// Implementere viewDidLoad å gjøre ekstra oppsett etter lasting utsikten, typisk fra en spiss.
- (Void) viewDidLoad {
[Super viewDidLoad];
}
* /
- (Void) viewDidLoad {
[Super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
hastighet ((DeepThoughtsViewController *) (self.parentViewController)) - slider.value = + kMaxSpeed;.
}
#pragma mark -
#pragma mark Textfield
- (BOOL) textFieldShouldBeginEditing: (UITextField *) Textfield {
[Textfield setReturnKeyType: UIReturnKeyNext];
returnere JA;
}
- (BOOL) textFieldShouldReturn: (UITextField *) Textfield {
[Textfield resignFirstResponder];
returnere JA;
}
- (Void) textFieldDidEndEditing: (UITextField *) Textfield {
wordsOfWisdom = textField.text;
}
#pragma mark -
#pragma mark Controls
- (IBAction) speedChanged: (id) avsender {
[Delegat changeSpeed: [(UISlider *) avsender verdi]];
}
- (IBAction) gjort {
if ([theTextField.text isEqualToString: @ ""]!) wordsOfWisdom = theTextField.text;
[Self.delegate settingsViewControllerDidFinish bolig:];
}
#pragma mark -
#pragma mark Orientering
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
// Overstyrt å tillate noen orientering.
returnere JA;
}
#pragma mark -
#pragma mark Minnehåndtering
- (Void) didReceiveMemoryWarning {
// Utgivelser visningen, hvis den ikke har en superview.
[Super didReceiveMemoryWarning];

// Slipp noen bufrede data, bilder, etc som ikke er i bruk.
}
- (Void) viewDidUnload {
[Super viewDidUnload];
// Slipp noen beholdt subviews av hovedvisningen.
// F.eks self.myOutlet = null;
}
- (Void) dealloc {
[Super dealloc];
}
end

Ok, her er hva den foregående koden gjør:

  • Selv omproperty erklæring i topptekstfilen forteller kompilatoren at det er tilgangsmetoder, trenger du ensynthesize statement for en eiendom for å skape disse metodene. Densynthesize uttalelsen forteller kompilatoren å opprette tilgangsmetoder for deg - en for hverproperty erklæring.
  • Den viewDidLoad metoden setter bakgrunnen og hastighet for glideren (som kontrollerer hastigheten på ord som ruller nedover iPad-skjermen).
  • Den UITextFieldDelegate protokollen definerer meldingene som ble sendt til et tekstfelt delegat som en del av sekvensen med å redigere teksten. Når brukeren utfører en handling som normalt ville starte en redigeringsøkten, tekstfeltet kaller textFieldShouldBeginEditing: metode først for å se om redigering bør faktisk gå. I de fleste tilfeller vil du bare returnere JA fra denne metoden for å tillate redigering for å fortsette.
  • Tekstfeltet kaller textFieldShouldReturn: metode når brukeren kraner Return knappen på tastaturet for å finne ut om det skal behandle Return. Du kan bruke denne metoden for å implementere eventuelle tilpassede atferd når Return bankes på knappen, men for ditt formål, du bare returnere JA (som er standard), selv om du kunne gå tilbake NEI å ignorere Return knappen.
  • Etter å si "ja" til dette, og at skjer den virkelige handlingen med textFieldDidEndEditing: metode, som kalles etter tekstfeltet fratrer sin første responder status å fortelle representanten at redigeringen har stoppet for den angitte tekstfeltet, slik at du nå har det redigerte wordsOfWisdom (som er ordene som ruller ned iPad-skjermen i denne app).
  • Deretter gi deg en speedChanged metode (av typen IBAction) for å håndtere en endring i fart, som bruker representanten er changeSpeed ​​metode for å umiddelbart endre hastigheten på animasjonen i visningen når brukeren endrer den i Modal visning.
  • Du leverer også en ferdig metode som håndterer muligheten for et tomt tekstfelt. Koden tildeler tekstfeltet tekst til wordsOfWisdom bare hvis feltet er ikke theTextField.text isEqualToString: @ "".