7
votes

UIPICKERView: Obtenez la valeur de la ligne en tournant?

J'aimerais avoir la valeur de la ligne en temps réel car l'utilisateur iPhone tourne une roue dans un uipickerview (non seulement lorsque la roue s'installe sur une rangée particulière). J'ai examiné la sous-classement Uipickerview, puis remplace la méthode MouseDown, mais je ne pouvais pas obtenir cela pour travailler. Toute suggestion serait très appréciée.


0 commentaires

3 Réponses :


0
votes

Le uipickerview Les dimensions sont assez cohérentes. Au lieu de la sous-classement, vous pouvez peut-être superposer un uiview de votre choix au-dessus de la vue de choix, à partir duquel vous pouvez suivre et mesurer les mouvements de traînée, avant de passer ces touches à la vue de la sélection.


3 commentaires

Sauf que, alors vous devriez inverser l'ingénieur, la quantité de filature qui a eu lieu pour une traînée donnée, après avoir été laissée aller ...


Je ne suis pas sûr que la question soit différente de l'approche de sous-classement. Au moins avec l'approche uiview , son code pourrait être réutilisé plus facilement à d'autres fins.


Vrai, toute approche qui n'a pas regardé qu'à la saisie de la vue de cueillette aurait le même problème.



11
votes

Peut-être essayez peut-être de mettre en œuvre la méthode de déléguée:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view


1 commentaires

Encore plus facile: dans cette méthode, appelez (NSInteger) Composant: (NSInteger) Composant, et vous obtiendrez la ligne actuelle et vous pourrez récupérer sa valeur sans calculer les décalages ni nous inquiéter de quelle manière le sélecteur filait.



0
votes

Vous pouvez trouver UiscrollView dans Uipickerview hierarchy par la méthode suivante: XXX PRE>

Mise en œuvre et configuration Uiscrollviewelegate: P>

func scrollViewDidScroll(scrollView: UIScrollView) {
    let offset = scrollView.contentOffset.y
    let index = Int(offset/itemHeight)
    if index >= 0 && index < items.count {
        let item = items[index]
        // do something with item
    }
}


0 commentaires