2012-08-24 3 views
0

Je suis nouveau à constructeur d'interface. Je souhaite concevoir une vue dans le constructeur d'interface.
Je sais que je peux charger la vue via 'loadNibNamed'.concevoir une vue avec le constructeur d'interface

Maintenant, supposons qu'il y aura deux boutons (ou deux geste de reconnaissance du robinet) dans la vue, et quand ces boutons sont touchés, certaines fonctions ont besoin de tirer.
Comment connecter (?) Le contact à certaines fonctions du viewController que j'ai appelé 'loadNibNamed'?

La vue sera une vue contextuelle (PopUp view) avec deux boutons (ou reconnaissants gestuels).

Répondre

0

Vous devez configurer les prises de vos objets de création d'interface (boutons) vers votre classe.

Pour ce faire, vous devez faire de votre classe qui appelle « loadNibNamed » en tant que classe déléguée. Puis synthétiser le bouton de sorte qu'il est une propriété.

Une fois que vous faites cela ajoutez le sélecteur:

[button addTarget:self action:@selector(buttonPressed) 

forControlEvents: UIControlEventTouchUpInside];

Le meilleur moyen serait d'écrire une nouvelle classe pour cette vue particulière. Ensuite, si vous voulez attraper l'événement dans la classe qui a appelé « loadNibNamed » vous pouvez définir la cible à quelque chose d'autre:

[button addTarget:(UIMyClass)sender action:@selector(buttonPressed) 
    forControlEvents:UIControlEventTouchUpInside]; 

Il devrait y avoir beaucoup de tutoriels là-bas :) - BTW Avez-vous envisagé la mise à niveau Xcode et en utilisant des storyboards?

--edit: -

Le problème se produit parce que vous mélangez le codage avec la construction d'interface. Je pense que vous devez toujours créer une classe viewcontroller pour votre nouvelle vue, mais vous pouvez changer la cible du sélecteur à la classe appelante.

Voir plus ici sur les sélecteurs: @selector and other class (Objective-C)

Il y a une question similaire ici de pousser des données à une nouvelle vue programatically:

Can we pass a parameter to view did load or view will appear of other class from a class

+0

Merci de votre contribution. Où est-ce que je synthétise le bouton? Puisque je ne fais pas un viewController qui va avec cette vue .. Je ne vois pas où je pourrais déclarer les boutons .. Je suppose qu'il doit y avoir beaucoup de tutoriels, j'ai regardé par-dessus, mais toujours confus. et où réside le code (addTarget: action :)? – eugene

+0

voir mon edit ^^^ – FaddishWorm

+0

Merci beaucoup, mais je ne comprends pas. :( – eugene

0

Si vous êtes nouveau à IB, il y a trois étapes .

  1. Ajouter le nom de méthode dans votre .h (en-tête) fichier, à savoir

    - (IBAction) someMethod: (id) expéditeur;

  2. Enregistrez le fichier .h modifié.

  3. Ouvrir Interface Builder.

  4. Ouvrez la fenêtre du propriétaire du fichier dans le menu Outils, je crois.

  5. Cntrl + Cliquez sur la sélection du propriétaire du fichier sous la fenêtre du propriétaire du fichier. Une fenêtre noire devrait apparaître avec un tas d'options d'interface en dessous. Un petit cercle noir doit apparaître à côté de someMethod

  6. Faites glisser ce petit cercle noir (une ligne bleue devrait apparaître) sur le bouton auquel vous souhaitez que votre méthode se connecte. Un autre menu devrait apparaître. Choisissez une action appropriée (quelque chose comme sur le toucher ou quelque chose comme ça). Répétez pour le deuxième bouton.

  7. Dans le IB pour chaque bouton, donnez-leur un tag dans la liste des attributs sous les propriétés (je crois). Si vous avez besoin de la fenêtre Propriétés, regardez à nouveau dans le menu Outils. Allez dans la section Tag et attribuez une étiquette différente à chaque bouton. (1, 2, 3 ... etc).

  8. Implémentez la méthode dans le fichier .m. Assurez-vous différenciez vos actions pour lesquelles le bouton l'utilisateur sélectionne, à savoir si (sender.tag == 1) {...} else if (sender.tag == 2) {...}

Enregistrer et exécuter.

La fin.

Questions connexes