web-dev-qa-db-fra.com

Impossible de connecter IBOutlet du storyboard à la sous-classe UIView

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.

 This does not work Cela ne fonctionne pas (clic droit du storyboard sur le fichier Swift)

 This works 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.

17
Chan Jing Hong

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.

3
Chan Jing Hong

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

20
shallowThought

C'est basique, mais facile à négliger. Assurez-vous que le contrôleur de vue sur lequel vous faites glisser la sortie est étiqueté comme la classe personnalisée que vous avez créée.

 enter image description here

10
ScottyBlades

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.

 enter image description here

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.

3
Nikhil Manapure

Points à vérifier si IBOutlet ne se connecte pas:

  1. 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. 

  2. 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!
    
0
Idan