Je peux cliquer avec le bouton droit de la souris et faire glisser de mon fichier de sous-classe UIView personnalisé vers les éléments du storyboard pour les connecter, mais je ne peux pas le faire dans l'autre sens. Je crois que c'est un bug de Xcode. Y a-t-il quelque chose que je puisse faire pour résoudre ce problème? Ce n'est pas la première fois que cela se produit déjà et c'est agaçant.
J'ai déjà essayé de nettoyer et de redémarrer Xcode à plusieurs reprises sans succès.
Cela ne fonctionne pas (clic droit du storyboard sur le fichier Swift)
Cela fonctionne (clic droit de l'IBAction du fichier Swift au storyboard)
En fait, j'utilise Xcode 8.1 avec Swift 3.0.
MISE À JOUR: Je ne cherche pas de réponse sur la façon de connecter IBOutlets/IBActions, car comme je l'ai mentionné dans la question ci-dessus (et dans les captures d'écran), je suis déjà en mesure de les connecter et l'application fonctionne correctement. La question est plutôt de savoir pourquoi Xcode ne me permettait pas de me connecter depuis Storyboard> Swift file, mais de le faire depuis Swift fichier> Storyboard. Je suis désolé si la question est trompeuse.
Après avoir essayé une partie de la solution donnée, ce qui a finalement fonctionné est de redémarrer le MacBook. Cela ressemble à un bug du côté de XCode. Tant pis.
Nous voyons parfois ce problème aussi depuis Xcode 8
et supposons qu’il s’agit d’un bogue Xcode.
Pour contourner le problème:
Écrivez le point de vente dans le code @IBOutlet weak var myUiElement: UIView!
Ctrl + glisser de votre sortie vers l'élément d'interface utilisateur dans le storyboard
Créez un point de vente comme celui-ci dans Objective-C
@property (nonatomic, weak) IBOutlet UIView *view;
ou comme dans Swift 3
@IBOutlet weak var instruction: UILabel?
puis connectez-le comme indiqué dans cette image.
Parfois, la manière habituelle de connecter action et sortie ne fonctionne pas à cause du sous-classement. Cette méthode est pratique pour de telles situations.
Points à vérifier si IBOutlet
ne se connecte pas:
La classe est-elle définie dans le storyboard?
Sélectionnez la UIViewController
dans storyboard
, puis sur le côté droit de l'écran, sélectionnez le identity inspector
et affectez la classe appropriée.
Le type de prise que vous avez défini correspond-il à celui de storyboard
? Par exemple, nous connectons UIButton
, puis la prise devrait ressembler à cela, écrivez le code de la prise, puis connectez-vous au contrôleur de vue:
@IBOutlet weak var theButton: UIButton!