2013-03-31 8 views
1

Je fais une application où l'utilisateur sélectionne quelques entrées différentes (exemple non réel: marque de voiture, miles et couleur). Chaque sélection a des valeurs définies à choisir, qui sont chacune une ou deux phrases longues. Je me demande quelle est la meilleure façon de l'afficher.Meilleure façon d'afficher les options avec texte long dans iOS?

Une vue du sélecteur ne fonctionnera pas correctement car certaines options ont une longueur de deux phrases. Je pourrais utiliser une vue modale ou poussée avec des tables, mais je ne suis pas sûr de ce qui est le plus "correct" selon les conventions? Disons que j'utilise une vue modale, est-ce contre une convention de la rejeter automatiquement lorsque l'utilisateur sélectionne quelque chose dans le tableau? Pour me rendre plus clair, voici un exemple de la hiérarchie dont je parle.

Example

Répondre

1

Vous pouvez rejeter le contrôleur actuel de vue modal chaque fois que vous voulez. Il n'y a pas de 'façon correcte' de le faire. Lorsque l'utilisateur a sélectionné une cellule de vue de la table, vous pouvez rejeter le contrôleur modal de vue dans la méthode UITableViewDelegate:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    /* dismiss your modal view controller 

    through the UIViewController method 
    - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion 
    or through the UINavigationViewController method 
    - (UIViewController *)popViewControllerAnimated:(BOOL)animated 

    depending on the way you presented it in the first place. */ 

} 

Et une vue de table est votre meilleur choix pour afficher les options avec long texte. Vous pouvez régler la hauteur de chaque cellule dans la vue de la table par la méthode UITableViewDelegate:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return /*appropriate cell height in order to accommodate long text */; 
} 

Aussi, si vous souhaitez calculer la hauteur d'un morceau de texte, vous pouvez le faire comme ça :

// get the table view width 
CGFloat tableViewWidth = [tableView bounds].size.width; 

// get your piece of text 
NSString *text = /*your text*/ 

CGFloat textHeight = [text sizeWithFont:[UIFont systemFontOfSize:18]/*or any font you want*/ 
         forWidth:tableViewWidth 
         lineBreakMode:NSLineBreakByWordWrapping].height; 
Questions connexes