====== UIKit ======
//UIKit// ist ein Framework von Apple für [[ios:development|iOS]] indem alle Komponenten für [[lexikon:ui|User Interfaces (UI)]] enthalten sind, wie z.B. Buttons oder Text-Felder aber auch [[lexikon:mvc|Views]] ganz allgemein.
===== UITableView =====
Ein //UITableView// ist ein komplexerer View zur tabellarischen Darstellung von Daten. UITableViews werden aber auch gerne zur Darstellung linearer User Interfaces verwendet.
==== Statischer UITableView ====
Möchte man einen UITableView nicht dynamisch mit Daten befüllen, sondern ihn mit statischen Daten füttern oder ihn als Eingabe-Formular verwenden, muss man den Zellen-Typ im //Storyboard-Editor// im //Attribute Inspector// in der //Utility//-Palette unter "Content" von "Dynamic Prototypes" auf "Static Cells" ändern.
Zudem müssen im dazugehörigen TableViewController (der ggf. erst später erstellt wird) die Methoden ''numberOfSectionsInTableView:'' und ''tableView:numberOfRowsInSection:'' unter "Table view data source" komplett gelöscht werden!
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
#warning Potentially incomplete method implementation.
// Return the number of sections.
return 0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
#warning Incomplete method implementation.
// Return the number of rows in the section.
return 0;
}
Sobald diese beiden Methoden im TableViewController vorhanden sind, geht iOS davon aus, dass man, auch wenn man im Storyboard etwas anderes eingestellt hat, **doch** keine statischen UITableView sondern dynamische Zellen werden möchte und ignoriert komplett die, im Storyboard konfigurierten, statischen Zellen und deren Inhalte.
===== UITextField =====
Das //UITextField// ist ein einzeiliges Text-Feld zum bearbeiten eines Texts.
==== Zum nächsten UITextField springen ====
Wenn in einem View mehrere UITextFields vorhanden sind, z.B. bei einem Login eines für den User-Namen und eines für das Passwort, dann möchte man mit i.d.R. mit einem Tap auf die Enter-Taste der Tastatur zum nächsten Text-Feld springen. Damit dies funktioniert muss der "First Responder" weitergereicht werden:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if ( textField == self.fooTextField ) {
// Jump to the next UITextField
[self.barTextField becomeFirstResponder];
} else if ( textField == self.barTextField ) {
// Jump to the next UITextField
[self.foobarTextField becomeFirstResponder];
} else {
// Hide keyboard
[textField resignFirstResponder];
}
return YES;
}
Hinweis: Das Beispiel geht davon aus, dass der ViewController als UITextFieldDelegate konfiguriert ist und Outlets für die drei UITextFields (''fooTextField'', ''barTextField'' und ''foobarTextField'') erstellt wurden.
Quelle: [[http://www.flexicoder.com/blog/index.php/2009/08/iphone-keyboard-automatically-move-to-next-textfield-when-next-is-pressed/|FlexiCoder Blog: iPhone keyboard automatically move to the next TextField when "next" is pressed]]