L'interface la plus semblable à l'iPhone pour les formulaires va être une vue groupée. C'est ce à quoi la plupart des utilisateurs s'attendent, après avoir utilisé d'autres applications qui utilisent des vues groupées pour ajouter et éditer des données structurées.
Une bonne pratique est de créer un enum
(énumération) pour les sections et rangées dans les sections, par exemple:
typedef enum {
kFormSectionFirstSection = 0,
kFormSectionSecondSection,
kFormSectionThirdSection,
kFormSections
} FormSection;
typedef enum {
kFormFirstSectionFirstRow = 0,
kFormFirstSectionSecondRow,
kFormFirstSectionRows
} FormFirstSectionRow;
...
Dans cet exemple, vous pouvez utiliser cette énumération de se référer aux sections par nom au lieu du numéro .
(Dans la pratique, vous auriez probablement pas utiliser kFormSectionFirstSection
comme un nom descriptif, mais quelque chose comme kFormSectionNameFieldSection
ou kFormSectionAddressFieldSection
etc., mais cela ne devrait illustrer, espérons la structure du enum
.)
Comment utiliseriez-vous cette ?
Voici un exemple d'une des méthodes de déléguer quelques vue de table qui montrent comment cela est utile:
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
return kFormSections;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case kFormSectionFirstSection:
return kFormFirstSectionRows;
case kFormSectionSectionSection:
return kFormSecondSectionRows;
...
default:
break;
}
return -1;
}
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// cell setup or dequeue...
switch (indexPath.section) {
case kFormSectionThirdSection: {
switch (indexPath.row) {
case kFormThirdSectionFourthRow: {
// do something special here with configuring
// the cell in the third section and fourth row...
break;
}
default:
break;
}
}
default:
break;
}
return cell;
}
Cela devrait rapidement montrer l'utilité et la puissance de énumérations.
Les noms dans le code sont beaucoup plus faciles à lire que les nombres. Lorsque vous utilisez des méthodes déléguées, si vous avez un bon nom descriptif pour une section ou une ligne, vous pouvez plus facilement lire la logique de la gestion de la vue tabulaire et des cellules.
Si vous souhaitez modifier l'ordre des sections ou des rangées, tout ce que vous avez à faire est de réorganiser l'ordre des étiquettes énumérées dans la construction enum
. Vous n'avez pas besoin d'entrer dans toutes les méthodes de délégué et de changer magic numbers, ce qui devient rapidement une danse délicate et sujette aux erreurs une fois que vous avez plus de quelques sections et sections.
Grande explination. Je voudrais également souligner que l'utilisation d'un UITableView vous pouvez appeler '- (void) scrollToRowAtIndexPath: (NSIndexPath *) indexPath atScrollPosition: (UITableViewScrollPosition) scrollPosition animé:' sur la tableView pour faire défiler le champ actuel de sorte qu'il est dans une position optimale tandis que le le clavier est montré. – jamone
Génial! Merci @Alex et @jamone – Dev