2012-10-30 5 views
0

J'utilise un UIPickerView pour afficher les réponses à une question. Il doit alors y avoir un bouton pour révéler la bonne réponse si l'utilisateur ne peut pas le résoudre. J'ai essayé ci-dessous, mais l'application se bloque. Comment puis-je autoscroll à la bonne réponse?défilement automatique uipickerview lorsque le bouton est cliqué

-(void)reveal { 

    [myPickerView selectRow:0 inComponent:0 animated:YES]; 

} 

EDIT: Oui je suis juste en train de le faire pour faire défiler jusqu'à la première réponse dans l'exemple ci-dessus :)

[ExcerciseController révèlent:]: sélecteur non reconnu envoyé à l'instance 0x68398f0 2012- 10-30 14: 57: 21.673 English [20786: f803] * Terminaison de l'application due à une exception non interceptée 'NSInvalidArgumentException', raison: '- [ExcerciseController reveal:]: sélecteur non reconnu envoyé à l'instance 0x68398f0' * : (0x1397022 0x108ccd6 0x1398cbd 0x12fde d0 0x12fdcb2 0x1398e99 0x1f214e 0x1f20e6 0x298ade 0x298fa7 0x298266 0x2173c0 0x2175e6 0x1fddc4 0x1f1634 0x21a3ef5 0x136b195 0x12cfff2 0x12ce8da 0x12cdd84 0x12cdc9b 0x21a27d8 0x21a288a 0x1ef626 0x2c5d 0x2b85) Mettre fin à appeler lancer une exception [Mise à traiter 20786 fil 0xf803]

+1

Il est difficile de deviner à cette heure de la journée! –

+0

Le code que vous avez posté est la réponse.Dans ce cas, si le sélecteur fait défiler quelque chose d'autre et le premier objet lorsque vous appelez ce code, il défile vers le haut. –

+0

s'il vous plaît vérifier le nom de la fonction .. vous avez appelé révéler? –

Répondre

0

myPickerView ne peut pas être l'instance de UIPickerView comme UIPickerView répond au sélecteur - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated

Vous devez également vérifier comment la méthode reveal est appelée.

+0

hazzar !! vous avez conduit à la bonne réponse.J'invoquais avec révéler: au lieu de révéler – user987723

+0

Cheers, passez une bonne journée! –

0

s'il vous plaît essayer de poster la description de l'accident, besoin de blocs de code pour y répondre :)

Cependant, juste essayer le code ci-dessous

myPickerView.delegate = self; 
[myPickerView reloadAllComponents]; 
[myPickerView selectRow:0 inComponent:0 animated:YES]; 
+0

ajouté le crash ci-dessus. aussi essayé votre code, n'a pas travaillé :( – user987723

1

Maintenant, que le message d'erreur/erreur est visible, il s'avère que l'erreur n'est pas dans la façon dont vous appelez la méthode du sélecteur. C'est ainsi que vous appelez reveal.

Vous appelez révéler avec un objet. Ou vous l'appelez en passant un sélecteur. Toutefois, le sélecteur de courant que vous appelez est reveal: mais le nom des méthodes est reveal sans aucun paramètre. reveal: nécessiterait un paramètre.

Où que vous appelez, assurez-vous que vous appelez reveal et non reveal:

Je suppose que vous réglez le sélecteur soit dans le constructeur d'interface ou lors de la création du bouton programme. C'est l'endroit où vous avez fait l'erreur.

En arrière-plan: Le message d'erreur vous indique ce que vous devez savoir. Un nom de méthode est appelé sélecteur dans Objective-C lors de l'exécution. Dans certains documents, vous trouverez le libellé d'un message (appelé reveal: dans votre cas) est envoyé à un récepteur nommé ExcerciseController dans votre cas.

Objectif-C est polymorphe. Cela signifie que reveal (appelé sans aucun paramètre) fait référence à une autre implémentation de méthode que reveal: (appelée avec un paramètre) ou même reveal:: (appelée avec trois paramètres).

Questions connexes