Quel est le but d'utiliser IBAction et IBOutlet dans le codage Objective-C pour iPhone, cela fait-il une différence si je ne les utilise pas?
IBAction
et IBOutlet
sont des macros définies pour désigner des variables et des méthodes auxquelles il est possible de se référer dans Interface Builder.
IBAction
résout void
et IBOutlet
ne résout rien, mais ils signifient au constructeur Xcode et Interface que ces variables et méthodes peuvent être utilisées dans le constructeur Interface pour lier des éléments d'interface utilisateur à votre code.
Si vous n'utilisez pas du tout Interface Builder, vous n'en avez pas besoin dans votre code, mais si vous allez l'utiliser, vous devez spécifier IBAction
pour les méthodes qui seront utilisées dans IB et IBOutlet
. pour les objets qui seront utilisés dans IB.
La méthode traditionnelle pour marquer une méthode afin qu'elle apparaisse dans Interface Builder, et que vous puissiez y faire glisser une connexion, consiste à renvoyer la méthode à IBAction. Toutefois, si vous annulez votre méthode (IBAction est # définie comme étant vide) et fournissez un argument (id), la méthode est toujours visible. Cela offre une flexibilité supplémentaire, al
Ces 3 éléments sont visibles depuis Interface Builder:
-(void) someMethod1:(id) sender;
-(IBAction) someMethod2;
-(IBAction) someMethod3:(id) sender;
Consultez le Guide de l'utilisateur Interface Builder d’Apple pour plus de détails, en particulier la section Intégration Xcode.
Vous devez utiliser IBOutlet et IBAction si vous utilisez le générateur d'interface (d'où le préfixe IB) pour vos composants d'interface graphique. IBOutlet est nécessaire pour associer des propriétés dans votre application à des composants dans IB, et IBAction est utilisé pour permettre à vos méthodes d'être associées à des actions dans IB.
Par exemple, supposons que vous définissiez un bouton et une étiquette dans IB. Pour modifier dynamiquement la valeur de l'étiquette en appuyant sur le bouton, vous définissez une action et une propriété dans votre application, comme suit:
UILabel IBOutlet *myLabel;
-(IBAction) pushme;
Ensuite, dans IB, connectez myLabel à l’étiquette et connectez la méthode pushme au bouton. Vous avez besoin d’IBAction et d’IBOutlet pour que ces connexions existent dans IB.
Interface Builder les utilise pour déterminer quels membres et quels messages peuvent être «connectés» aux contrôles d'interface que vous utilisez dans votre fenêtre/vue.
IBOutlet et IBAction sont uniquement là en tant que marqueurs qu'Interface Builder recherche lorsqu'il analyse votre code lors de la conception, ils n'ont aucun effet sur le code généré par le compilateur.
Un point de vente est un lien entre le code et l'interface utilisateur. Si vous souhaitez afficher ou masquer un élément de l'interface utilisateur, obtenir le texte d'un champ de texte ou activer ou désactiver un élément (ou une centaine d'autres choses), vous devez définir un point de vente de cet objet dans les sources et le lier via l’interface objet de l’interface utilisateur. Après cela, vous pouvez utiliser la sortie comme n'importe quelle autre variable de votre code.
IBAction - une méthode spéciale déclenchée par des objets d'interface utilisateur. Interface Builder les reconnaît.
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
Pour plus d'informations, consultez Apple Docs
J'ai parcouru le diagramme en regardant le codage valeur-clé, pensant que cela pourrait aider quelqu'un. Cela aide à comprendre ce qu'est IBOutlet.
En regardant le flux, on peut voir que les IBOutlets ne sont là que pour faire correspondre le nom de la propriété avec un nom de contrôle dans le fichier Nib.
IBAction et IBOutlets sont utilisés pour connecter votre interface créée dans Interface Builder à votre contrôleur. Si vous ne voulez pas utiliser Interface Builder et construire votre interface entièrement en code, vous pouvez créer un programme sans les utiliser. Mais en réalité, la plupart d’entre nous utilisons Interface Builder. Dès que vous souhaitez obtenir une certaine interactivité dans votre interface, vous devrez utiliser IBActions et IBoutlets.
lorsque vous utilisez Interface Builder, vous pouvez utiliser l'inspecteur de connexions pour configurer les événements à l'aide de gestionnaires d'événement. Ces derniers sont censés être les fonctions associées au modificateur IBAction. Une vue peut être liée à la référence du même type et au modificateur IBOutlet.
IBOutlet
IBAction
@ - Modèle dynamique IB - Interface Builder