Quel est le but d'utiliser IBOutlets et IBActions dans Xcode et Interface Builder?
Cela fait-il une différence si je n'utilise pas IBOutlets et IBActions?
Rapide:
@IBOutlet weak var textField: UITextField!
@IBAction func buttonPressed(_ sender: Any) { /* ... */ }
Objectif c:
@property (nonatomic, weak) IBOutlet UITextField *textField;
- (IBAction)buttonPressed:(id)sender { /* ... */ }
Réponses:
IBAction
etIBOutlet
sont des macros définies pour désigner des variables et des méthodes auxquelles il est possible de faire référence dans Interface Builder.IBAction
résoutvoid
etIBOutlet
résout en rien, mais ils signifient pour Xcode et Interface Builder que ces variables et méthodes peuvent être utilisées dans Interface builder 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 comptez l'utiliser, vous devez spécifier les
IBAction
méthodes qui seront utilisées dans IB etIBOutlet
pour les objets qui sera utilisé dans IB.la source
IBOutlet
ne résout pasid
. Considérez ceci:IBOutlet UILabel *nameLabel;
- siIBOutlet
résolu enid
, alors ce code sera lu,id UIlabel *namelabel;
ce qui produit une erreur de compilation. Comme je l'ai dit au départ, neIBOutlet
résout rien.La façon traditionnelle de marquer une méthode pour qu'elle apparaisse dans Interface Builder et que vous puissiez y faire glisser une connexion a été de faire en sorte que la méthode renvoie le type IBAction. Cependant, si vous rendez votre méthode vide, à la place (IBAction est # définie comme vide), et fournissez un argument (id), la méthode est toujours visible. Cela offre une flexibilité supplémentaire, al
Tous les 3 sont visibles depuis Interface Builder:
Pour plus de détails, consultez le Guide de l'utilisateur d'Apple Interface Builder, en particulier la section intitulée Intégration Xcode.
la source
Vous devez utiliser IBOutlet et IBAction si vous utilisez le générateur d'interface (d'où le préfixe IB) pour vos composants GUI. IBOutlet est nécessaire pour associer les propriétés de 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 similaire à:
Ensuite, dans IB, vous connectez myLabel à l'étiquette et connectez la méthode pushme avec le bouton. Vous avez besoin d'IBAction et d'IBOutlet pour que ces connexions existent dans IB.
la source
(void)
méthode dans Interface Builder.Interface Builder les utilise pour déterminer quels membres et messages peuvent être «connectés» aux commandes d'interface que vous utilisez dans votre fenêtre / vue.
IBOutlet et IBAction sont uniquement là en tant que marqueurs recherchés par Interface Builder lorsqu'il analyse votre code au moment de la conception, ils n'ont aucun effet sur le code généré par le compilateur.
la source
Ran dans le diagramme tout en regardant le codage clé-valeur, pensant que cela pourrait aider quelqu'un. Cela aide à comprendre ce qu'est IBOutlet.
En regardant le flux, on pouvait 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.
la source
Un Outlet est un lien entre le code et l'interface utilisateur. Si vous souhaitez afficher ou masquer un élément de l'interface utilisateur, si vous souhaitez 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 une sortie de cet objet dans les sources et lier cette prise. via l '«objet interface» vers l'élément UI. Après cela, vous pouvez utiliser la prise comme n'importe quelle autre variable de votre codage.
IBAction - une méthode spéciale déclenchée par des objets d'interface utilisateur. Interface Builder les reconnaît.
Pour plus d'informations, veuillez consulter Apple Docs
la source
IBAction et IBOutlets sont utilisés pour connecter votre interface créée dans Interface Builder avec votre contrôleur. Si vous n'utilisez pas Interface Builder et construisez votre interface complètement dans le code, vous pouvez créer un programme sans les utiliser. Mais en réalité, la plupart d'entre nous utilisent Interface Builder, une fois que vous voulez obtenir une certaine interactivité dans votre interface, vous devrez utiliser IBActions et IBoutlets.
la source
IBOutlet
IBAction
@ - Modèle dynamique IB - Générateur d'interface
la source
L'un des principaux commentaires sur cette question demande spécifiquement:
Cette question est bien répondue par NSHipster:
IBAction
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#ibaction
IBOutlet:
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#iboutlet
la source
lorsque vous utilisez Interface Builder, vous pouvez utiliser l'inspecteur de connexions pour configurer les événements avec des gestionnaires d'événements, les gestionnaires d'événements sont censés être les fonctions qui ont le modificateur IBAction. Une vue peut être liée à la référence du même type et au modificateur IBOutlet.
la source