2010-09-10 5 views
0

J'ai une application iPhone qui utilise UIPickerView et 3 boutons.Sélection dynamique d'une ligne dans un UIPickerView

Ce sélecteur a un composant avec 100 lignes (0, 1, 2, ..., 98, 99).

Je voudrais mettre en œuvre le code de sorte que, lorsque j'appuie sur les boutons

  • button1: fera le sélecteur de sélection 21eme rangée (qui a une valeur 20)
  • Bouton2: fera la sélecteur de sélection 41e de ligne (qui a une valeur 40)
  • button3: fera le sélecteur de sélection ligne 60e (qui a une valeur 60)

Je sais comment faire le sélecteur sélectionner une ligne lorsque la première charge vue par mettre le code suivant dans la méthode viewDidLoad():

- (void)viewDidLoad 
{ 
    ........ 
    [picker selectRow:50 inComponent:0 animated:YES]; 
} 

mais je ne pus le sélecteur sélectionner la ligne désirée lorsque j'appuie sur les boutons.

Répondre

0

OK, maintenant je Recréez le projet et retaper le code:

- (IBAction) goToRowTwenty 
{ 
    [picker selectRow:20 inComponent:0 animated:YES]; 
    [timerPickerView reloadComponent:0]; 
} 

et il fonctionne, je ne sais vraiment pas ce qui est arrivé, mais merci vous les gars pour répondre à ma question.

4

Crochet sur le bouton pour une méthode d'action, puis dans votre méthode d'action simplement appeler la même méthode selectRow:inComponent:animated:, à savoir

- (IBAction)button1Action { 
    [picker selectRow:20 inComponent:0 animated:YES]; 
} 

Et vous accrochez le bouton pour cette méthode dans Interface Builder.

+0

Oui, je l'ai fait. J'appelle même 'reloadComponent' depuis le sélecteur mais ça ne marche toujours pas. Je dois manquer quelque chose ici. C'est le code que j'utilise pour 'button1' dans mon application. - (IBAction) goToRowTwenty {[sélecteur de sélection: 20 inComponent: 0 animé: YES]; [timerPickerView reloadComponent: 0]; } –

+0

Merci pour l'indice. Parfois vous ne voyez pas l'évidence. :) –

0

Vous pouvez placer le même code que vous avez conservé dans viewDidLoad pour sélectionner pickerRow sur l'événement qui se déclenche lorsque vous cliquez sur le bouton.

-(void)button1clickevent{ 
//FUNCTION MUST GET FIRE WHEN BUttON ! IS CLICKED 
     [picker selectRow:50 inComponent:0 animated:YES]; 
} 

HEUREUX iCODING ...

+0

Oui, je l'ai fait. J'appelle même 'reloadComponent' depuis le sélecteur mais ça ne marche toujours pas. Je dois manquer quelque chose ici. C'est le code que j'utilise pour 'button1' dans mon application. - (IBAction) goToRowTwenty {[sélecteur de sélection: 20 inComponent: 0 animé: YES]; [timerPickerView reloadComponent: 0]; } –

+0

et quel est ce timepickerVoir ici ... recharger votre sélecteur [picker reloadComponent: 0] not [timepicker reloadComponent: 0]; Aussi theres pas besoin de recharger le sélecteur. S'il vous plaît vérifier si votre sélecteur est vraiment lié avec le sélecteur en xib. –

1

Assurez-vous également que le sélecteur est défini avec "IBOutlet" comme suit. Et connectez la prise de référence du sélecteur à ceci:

@property (nonatomic, retain) IBOutlet UIPickerView *picker;