2017-10-06 6 views
-2

Je suis en train d'ajouter différents uipickerviews à un point de vue, le problème est que le nombre de composants est défini un pour toutes les vues de sélecteur:différents UIPivkerviews nombre différent de composants

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 2 
} 

Est-il possible de définir nombre différent de composants pour différents uipickerviews? La même question est pour d'autres fonctions, comme le nombre de lignes

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) 

et source avec les composants eux-mêmes:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) 

comment cette distinction de uipickerviews être mis en œuvre rapidement?

Répondre

1

Créer IBOutlet s pour vos pickerViews puis vérifiez la pickerview dans la fonction avant de retourner la valeur

@IBOutlet weak var picker1: UIPickerView! 
@IBOutlet weak var picker2: UIPickerView! 

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    if pickerView == picker1 { 
     return 2 
    } 
    else { 
     return 1 
    } 
} 

Edit: Si vous créez vos ramasseurs programme, créer des propriétés pour les

var picker1: UIPickerView? 
var picker2: UIPickerView? 

func createMyPickers() { 
    picker1 = UIPickerView(... 
    picker2 = UIPickerView(... 
} 

De cette façon, vous pouvez accéder à vos sélecteurs dans les méthodes de délégué!

+0

merci! cela fonctionne, dans mon cas, a dû utiliser tag pour distinguer plusieurs uipickerviews – Anton

+0

ne pas se fier à des étiquettes !! Make IBOutlets –

+0

J'ajoute ce sélecteur de vues par programme à différentes sous-vues, donc je ne peux pas utiliser IBOutlets ( cliqué sur la coche verte est marqué comme réponse? – Anton