Je vais utiliser un datePicker plusieurs endroits dans mon application. Je ne veux pas "encombrer" chaque viewController avec les méthodes de délégation pour UIPickerViewDelegate et UIPickerDatasource, plus je ferais les mêmes méthodes de délégation encore et encore.Classe Wrapper personnalisée pour UIDatePickerView sur iPhone
Chaque fois que la datePicker est en jeu, son seul but est de glisser à mi-chemin de l'écran, laisser l'utilisateur sélectionner une date et ensuite disparaître à nouveau. Je pensais à un wrapper viewController (DatePickerViewController) qui implémentait les méthodes de délégué datePicker, puis effectuais un NSNotification avec la valeur que l'utilisateur sélectionnait, qui était de nouveau interceptée par viewController lors de l'instanciation de DatePickerViewController. Cela ferait de moi un datPicker découplé et laisserait le viewController instancier le datePicker ne rien savoir d'un DatePickerDelegate, mais sachez qu'il y aurait potentiellement une notification contenant un NSDate. Cela me semble rationnel, comme quelque chose que je ferais dans d'autres langues. Mais s'il vous plaît corrigez-moi si Im me creuser un trou ici :)
Comme j'ai commencé à casser cela, j'ai rencontré quelques difficultés, je ne suis pas très expérimenté en Objective C et Cocoa. Je peux construire un viewController dans lequel viewDidLoad présente une datePicker, en cours d'exécution juste cela se traduira par un écran blanc vide avec un datePicker dans la moitié inférieure de l'écran. Si j'utilise "presentModalViewController" du viewController qui instancie le DatePickerViewController (personnalisé), il glisse bien sûr et couvre tout l'écran. Je voudrais que l'utilisateur ait toujours la moitié de la vue visible. Un peu comme définir l'heure d'un événement dans l'application iCal. (sauf qu'ils poussent un nouveau viewController sur la pile). Ahh juste réalisé que ce que je veux dire est exactement comme le clavier quand il glisse et couvre la moitié de l'écran.
Donc je suppose que mon problème principal est: pouvez-vous construire un viewController qui se comporte comme le clavier lorsqu'il est ajouté à une vue. Mais faites tout cela dans le ViewController qui est ajouté au lieu du contrôleur en instanciant la vue.
Espoir il est logique :)
Merci
Salut TechZen Merci beaucoup :) Il y a quelques choses que je ne comprends pas; qu'est-ce qu'une "vue de modèle"? Je voudrais terminer avec CustomDatePicker.m et .h, l'instancier et l'ajouter à la vue actuelle fera glisser un datePicker et la sélection d'une date appellera un eventHandler sur le viewController en ajoutant le datePickerView. Cela signifierait que je devais seulement implémenter la méthode de gestionnaire et attendre la notification, pas conforme à tous les protocoles? Peut-être votre chemin est meilleur, mais un peu nouveau pour moi, pouvez-vous montrer un exemple là-bas. Merci encore. – RickiG
Je pense qu'il veut dire vue modale - une vue qui, tout en haut, prend toutes les entrées. Les autres vues n'obtiennent pas d'événements d'interaction utilisateur. Une boîte de dialogue (erreur/avertissement) qui ne vous laissera pas cliquer sur autre chose jusqu'à ce que vous confirmiez qu'il s'agit d'un exemple de vue modale. –
Merci Epsilon :) Je suis parti à la recherche de "Model View" en pensant qu'il y avait un type d'UIView magique que je n'avais pas encore vu (j'ai obtenu quelques milliards de résultats "Model-View-Controller") l'utilisateur de pouvoir taper ailleurs, comme le clavier, rien ne vous empêche de le faire. J'ai essayé d'incorporer un Picker dans une ActionSheet pour obtenir l'animation 'slide in' etc. mais cela bloque vraiment l'écran. Peut-être que je devrais essayer de construire la vue et faire ma propre animation. – RickiG