2010-06-04 4 views
0

Débutant Cocoa question Touch:Ajout UIPickerViews à une vue avec d'autres éléments

Je vise une interface avec un UIPickerView et un UIButton.

Le sélecteur a besoin d'un délégué et d'une source de données, que j'ai initialement écrits en tant que classe PickerController distincte implémentant les bons protocoles. Cependant, je ne suis pas sûr de savoir comment utiliser le constructeur d'interface pour relier tout. Si j'ai un fichier .xib séparé pour le PickerController (avec juste un UIPickerView), et que j'ajoute la vue PickerController comme sous-vue dans le contrôleur principal, le UIPickerView est affiché correctement, mais le UIButton (qui est dans le fichier .xib principal) ne l'est pas. C'est comme si ajouter la vue PickerController prend toute la fenêtre et obscurcit la vue principale.

J'ai essayé de me débarrasser du fichier .xib distinct et d'ajouter directement le UIPickerView dans le fichier .xib principal. Cependant, avec cette configuration, je ne sais pas comment configurer le délégué et dataSource, car le propriétaire du fichier (le contrôleur principal) est différent de la classe <UIPickerViewDataSource, UIPickerViewDelegate> que j'ai écrite (le PickerController).

d'aide avec les éléments suivants serait génial:

  • dois-je avoir une classe séparée par-UIPickerView?
  • devrais-je avoir un fichier .xib distinct par UIPickerView?
  • si le délégué et la source de données se trouvent dans une classe différente du propriétaire du fichier, comment les connecter?
  • Puis-je ajouter une sous-vue à la vue principale sans interférer/masquer des éléments dans la vue principale?

Répondre

1

Il est possible de faire ce que vous voulez, mais il se situe bien en dehors du chemin le plus rapide pour arriver au résultat souhaité. Si vous êtes un débutant, je resterais avec les chemins faciles pour le moment, parce que Cocoa Touch est déjà une courbe d'apprentissage.

Donc. Le chemin le plus rapide serait d'avoir votre sous-classe principale dans la classe PickerController. Ensuite, vous pouvez créer votre fichier IB, utiliser votre classe de vue principale en tant que propriétaire du fichier et connecter les sources de données et les délégués.

Je devine de votre score de StackOverflow que vous êtes un développeur expérimenté qui commence sur iPhone dev. L'approche la plus rapide ci-dessus sentira probablement drôle, parce que le sous-classement ne se sent pas vraiment bien. Il semble que vous devriez être capable de combiner des contrôleurs, en les mélangeant pour créer une interface utilisateur. Et c'est possible, mais finit par être beaucoup de travail et un peu de mal à la tête si vous débutez. J'ai trouvé que le gain esthétique de faire une approche plus élégante ne vaut pas l'effort supplémentaire dans la plupart des cas.

+0

Merci pour ce Chris - heureux de prendre la route laide pour commencer les choses rapidement :) Je jouais avec cette option (ou même le code inline dans le contrôleur principal), mais je pensais que ce ne pouvait pas être le bon Way parce qu'il n'y aurait aucun moyen d'inclure deux UIPickerViews indépendants. Pourtant, je vais ignorer ce pont pour le moment, et le franchir quand j'arriverai. À votre santé! –

+0

Je recommanderais de ne pas mettre deux vues de sélecteur sur un écran de toute façon. Une vue sélecteur prend la moitié de l'écran. Au lieu de cela, vous pouvez diviser en deux écrans distincts, ou vous pouvez avoir une interface utilisateur comme une feuille d'action où vous cliquez sur un objet et faire apparaître une vue sélecteur juste quand vous devez faire une sélection. (Comme dans Safari). Si vous le faites, vous pouvez avoir les deux vues de sélecteur dans un fichier .xib. –

Questions connexes