Je travaille actuellement sur un programme qui remplit une vue de sélecteur de manière dynamique de mes données de base définies. J'ai tout ce qui fonctionne de données, mais le problème que je suis en train de mettre en train de formater mes étiquettes.
Le sélecteur est présenté avec sa propre barre d'outils dans une feuille d'action avec un bouton situé sur le côté droit de la barre d'outils. Son état initial est avec 2 cadrans visibles. Lorsque vous appuyez sur le bouton, il passe à 3 cadrans. p> J'ai défini manuellement la hauteur de la rangée à 32.0F. Je reçois des résultats très étranges en ce que certaines des étiquettes de la deuxième composante fonctionnent parfaitement. Mais d'autres ne sont pas du tout emballage, et certains sont juste montrant comme espace vide. P> IE: Bruxelles Sprout enveloppe bien (composant droit). Mais le lait et la crème ne s'affichent pas (seul le lait est visible) Les légumes n'apparaissent pas du tout. Où suis-je mal dans mon code? P> p>
3 Réponses :
J'ai réussi à le faire se comporter bien. J'ai changé la dernière partie en supprimant et je réglais le cadre manuellement p> pas sûr de savoir pourquoi cela a fonctionné pendant que la taille de la taille dynamique t. p> p>
Voici une version pour SWIFT.
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView { var label : UILabel if view == nil { label = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: UIFont.systemFontOfSize(UIFont.systemFontSize()).lineHeight * 2 * UIScreen.mainScreen().scale)) label.textAlignment = NSTextAlignment.Center label.numberOfLines = 2 label.lineBreakMode = NSLineBreakMode.ByWordWrapping label.autoresizingMask = UIViewAutoresizing.FlexibleWidth } else { label = view as UILabel } label.text = line1 + "\n" + line2 return label; } func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return UIFont.systemFontOfSize(UIFont.systemFontSize()).lineHeight * 2 * UIScreen.mainScreen().scale }
J'ai corrigé votre code, afin de laisser la largeur de l'étiquette adaptée à la largeur du sélecteur. J'ai utilisé l'approche de Koushi. Cela fonctionne très bien maintenant. Voir mon code ici ajouté.
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (pickerView.tag==1) return globalSubcategoryArray.count; else return globalAreasName.count; } -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (pickerView.tag==1){ self.subcategoryTextview.text = globalSubcategoryArray[row]; globalSelectedSubcategoryIndex=row; [self.subcategoryTextview resignFirstResponder]; }else{ self.areaTextview.text= globalAreasName[row]; globalSelectedAreaIndex=row; [self.areaTextview resignFirstResponder]; } }
Merci, cela m'a vraiment aidé.