Je sais que cela semble être un double de certaines autres questions, mais les réponses ne fonctionnent pas pour moi.
Les choses ont un peu changé dans la dernière version d'Interface Builder de Xcode. Quelqu'un peut-il me dire ce qui me manque? Il n'y a littéralement aucun code ici. Je teste simplement la connexion de prises à une sous-vue avec une classe personnalisée.
La première image montre que j'ai configuré la classe personnalisée et ajouté une propriété mais je ne peux pas établir la connexion.
La deuxième image montre que l'étiquette de la vue principale est connectée dans le contrôleur de la vue principale.
La troisième image montre qu'il n'y a pas de connexions de sortie pour l'étiquette de la sous-vue.
Vous pouvez écrire manuellement la déclaration de propriété IBOutlet
dans le @interface
de la sous-classe de vue personnalisée, et en supposant que vous avez défini la classe de base de votre sous-vue dans IB, vous pouvez alors faire glisser le cercle de sortie du code vers le contrôle de la scène.
Ou, comme vous le faites remarquer, Warren Burton a suggéré à la fois cette technique et une autre dans sa réponse à cette autre question, Can't Wire to Subview in IB .
Le problème est lié au propriétaire du fichier du View Controller. Il est probablement configuré comme étant IOViewController, vous ne pouvez donc établir des connexions de propriété que dans ce fichier .h.
Ce que vous pouvez faire, c'est créer un autre fichier .nib pour la sous-vue et y placer la sous-vue. Ensuite, dans ce fichier .nib, définissez le propriétaire du fichier IOSubview. Les connexions de propriété fonctionneront très bien là-bas. Ensuite, ajoutez simplement la sous-vue à votre IOViewController par programme. N'oubliez pas de charger le fichier nib à partir du bundle en premier.
Voici ce que j'ai fait (dans Swift):
Après cela, j'ai pu assigner une action.
Je soupçonne que pour Obj-C, c'est un processus similaire.
Vous ne créez pas de prises dans la sous-classe, vous créez la sortie sur le contrôleur de vue sur lequel il se trouve. Tu dois #import
la sous-classe dans IDViewController.h et y créer une sortie.
IDViewController.h
#import "IDSubclass.h"
...
@property (strong, nonatomic) IBOutlet IDSubclass *outletName;
Zoomez votre storyboard à 100%. Si vous effectuez un zoom arrière, pour dire 50%, la connexion de sortie ne fonctionnera pas.