2010-11-09 5 views
1

Tout comme le titre l'indique, est-il tout à fait possible de placer les points de suspension (...) au début d'une «rangée» UIPickerView au lieu de la fin?Points de suspension Iphone Pickerview au début au lieu de la fin

J'ai essayé deux retourner un NSString et un UIView pour:

pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 

J'ai même essayé envelopper la vue avec une barre de défilement pour essayer de trouver des solutions de rechange à ce que je voulais, mais il semble que les points de suspension à beggining est toujours ce qui me conviendrait le mieux.

La fin du texte est un identifiant unique, où le début peut être répété parmi divers objets, c'est pourquoi la fin du texte est plus importante.

Ce n'est pas ce que je fais, mais pense par exemple à une liste avec le nom et le numéro de sécurité sociale de la personne, le nom peut être répété, le SSN ne le fera pas. Je sais que je pourrais juste placer le nombre au début, mais cette application fonctionne de diverses plates-formes de cette façon, et le client veut vraiment que les nombres restent à la fin pour maintenir la cohérence.

Est-ce encore possible? Si oui, comment pourrais-je le faire?

Thanx, Stefano.

code réponse a ajouté:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
      forComponent:(NSInteger)component reusingView:(UIView *)view { 
    UILabel *retval = (id)view; 
    if (!retval) { 
     retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease]; 
    } 

    retval.text = [self.arrayWithData objectAtIndex:row]; 
    retval.lineBreakMode = UILineBreakModeHeadTruncation; 
    retval.backgroundColor = [UIColor clearColor]; 

    return retval; 
} 

Répondre

3

Vous pouvez le faire en mettant en œuvre le -pickerView: viewForRow: forComponent: reusingView: méthode sur votre UIPickerViewDelegate au lieu du -pickerView: titleForRow: forComponent: méthode. Ce dernier renvoie juste une chaîne à l'UIPickerView, à quel point c'est à la vue du sélecteur de déterminer comment l'afficher. À ce stade, vous n'avez aucun contrôle sur l'emplacement des ellipses. Au lieu de cela, implémentez -pickerView: viewForRow: forComponent: réutilingView:, en renvoyant un UILabel avec son lineBreakMode à UILineBreakModeHeadTruncation. Cela garantira que les ellipses sont placées au début de la chaîne.

+0

Merci beaucoup, travaillé parfaitement. Ajout d'un code de réponse détaillé à ma question pour tous ceux qui ont besoin d'une référence future. – blindstuff

Questions connexes