Lägga Metoder till en Modal View Controller i din iPad App

August 14

Om din iPad app har en Modal utsikt, måste du lägga till metoder till SettingsViewController.m (genomförande) fil. Dessa metoder hantera iPad App Modal visa och utföra alla användarinmatningsåtgärder.

Det hjälper att veta vad varje avsnitt av mallen-koden gör, och det är särskilt användbart om du använder # pragma mark uttalanden att bocka av varje avsnitt så att du snabbt kan hoppa till det relevanta avsnittet när det behövs. Följande exempelkod, som är en del av en app som heter Djupa Tankar, innehåller dessa uttalanden.

#import "SettingsViewController.h"
#import "DeepThoughtsViewController.h"
#import "Constants.h"
implementation SettingsViewController
synthesize delegat, wordsOfWisdom, reglage;
#pragma märke -
#pragma märke Visa livscykel
/ *
// Den utsedda initialiseraren. Åsido om du skapar regulatorn programma och vill utföra anpassning som inte är lämplig för viewDidLoad.
- (Id) initWithNibName: (NSString *) nibNameOrNil bunt: (NSBundle *) nibBundleOrNil {
if ((self = [super initWithNibName: nibNameOrNil bunt: nibBundleOrNil])) {
// Anpassad initiering
}
tillbaka själv;
}
* /
/ *
// Implementera viewDidLoad att göra ytterligare inställningar efter laddning av utsikten, vanligtvis från en spets.
- (Void) viewDidLoad {
[Super viewDidLoad];
}
* /
- (Void) viewDidLoad {
[Super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
. slider.value = + kMaxSpeed ​​- ((DeepThoughtsViewController *) (self.parentViewController)) hastighet;
}
#pragma märke -
#pragma märke textfield
- (BOOL) textFieldShouldBeginEditing: (UITextField *) textfield {
[Textfield setReturnKeyType: UIReturnKeyNext];
återvända JA;
}
- (BOOL) textFieldShouldReturn: (UITextField *) textfield {
[Textfield resignFirstResponder];
återvända JA;
}
- (Void) textFieldDidEndEditing: (UITextField *) textfield {
wordsOfWisdom = textField.text;
}
#pragma märke -
Kontroller #pragma märke
- (IBAction) speedChanged: (id) avsändare {
[Delegat changeSpeed: [(UISlider *) avsändare värde]];
}
- (IBAction) gjort {
if ([theTextField.text isEqualToString: @ ""]!) wordsOfWisdom = theTextField.text;
[Self.delegate settingsViewControllerDidFinish: self];
}
#pragma märke -
#pragma märke Orientering
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
// Styras för att tillåta någon orientering.
återvända JA;
}
#pragma märke -
#pragma märke Minneshantering
- (Void) didReceiveMemoryWarning {
// Frigör uppfattning om den inte har en Super.
[Super didReceiveMemoryWarning];

// Släpp alla cachade data, bilder, etc som inte är i bruk.
}
- (Void) viewDidUnload {
[Super viewDidUnload];
// Släpp varje kvar subviews i huvudvyn.
// T.ex. self.myOutlet = noll;
}
- (Void) dealloc {
[Super dealloc];
}
end

Okej, här är vad den föregående koden gör:

  • Även omproperty deklarationen i rubrikfilen berättar kompilatorn att det finns Åtkomstmetoder, behöver du ensynthesize uttalande för en fastighet för att skapa dessa metoder. Densynthesize uttalande säger kompilatorn att skapa Åtkomstmetoder för dig - en för varjeproperty deklaration.
  • Den viewDidLoad metoden ställer bakgrunden och hastighet för reglaget (som styr hastigheten på orden rulla ner iPad-skärmen).
  • Den UITextFieldDelegate protokollet definierar meddelanden som skickas till ett textfält delegat som en del av sekvensen för att redigera dess text. När användaren utför en åtgärd som normalt skulle starta en redigeringssession, textfältet anropar textFieldShouldBeginEditing: metoden först för att se om redigering verkligen borde fortsätta. I de flesta fall, skulle du helt enkelt tillbaka JA från denna metod för att tillåta redigering för att fortsätta.
  • I textfältet anropar textFieldShouldReturn: metoden när användaren knackar på knappen Tillbaka på tangentbordet för att ta reda på om den ska behandla Return. Du kan använda den här metoden för att genomföra anpassade beteende när knappen Return tappas, men för dina ändamål, du helt enkelt tillbaka JA (vilket är standard), även om du kunde återvända NO att ignorera knappen Return.
  • Efter att säga "ja" till detta och att, händer det verkliga åtgärder med textFieldDidEndEditing: metoden, som kallas efter textfältet avgår sin första responder status att berätta delegaten att redigeringen har slutat för den angivna textfältet, så att du nu har den redigerade wordsOfWisdom (vilka är de ord som scrolla ner iPad skärm i denna app).
  • Nästa, du ger en speedChanged metoden (av typen IBAction) för att hantera en förändring i hastighet, som använder delegatens changeSpeed ​​metod för att ändra omedelbart hastigheten på animeringen i vyn när användaren ändrar den i Modal vyn.
  • Du levererar också en klar metod som hanterar möjligheten av en tomt textfält. Koden delar textfältet text till wordsOfWisdom endast om fältet inte theTextField.text isEqualToString: @ "".