====== 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]]