J'ai récemment mis à niveau vers Xcode 8 et j'ai des problèmes avec le Storyboard.
Si j'ouvre le projet et que je n'ai pas le Storyboard ouvert, il se compilera et fonctionnera très bien. Une fois que j'ouvre le Storyboard, j'obtiens plusieurs erreurs concernant IB Designables, comme indiqué ci-dessous.
Ces vues sont les seules vues qui utilisent des vues personnalisées TextFieldEffects
et BEMCheckbox
que j'ai importées à l'aide de Cocoapods.
Réponses:
Vous pouvez essayer l'une des solutions suivantes pour déterminer la cause:
IBDesignablesAgentCocoaTouch
journaux dans ce répertoire:~/Library/Logs/DiagnosticReports
et voyez la cause.Allez dans l'éditeur -> Déboguer la vue sélectionnée tout en sélectionnant votre
@IBDesignable UIView
dans votre storyboard, et voyez la trace de la pile.Supprimer le dossier Derive Data.
Nettoyez votre projet
Shift
+Command
+Alt
+K
.Construisez votre projet
Command
+B
.la source
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
. Je ne savais pas que lesIBDesignablesAgentCocoaTouch
appels de processusinit(frame:)
, au lieu deinit?(coder aDecoder:)
.init(frame:)
en œuvre dans ma sousJ'ai résolu le problème en procédant comme suit:
File > Workspace settings
.DerivedData
dossier.DerivedData
dossier et supprimez le dossier correspondant à votre projet.Editor > Refresh all views
.Actualisé
Parfois, juste directement Aller à
Editor > Refresh all views
travaillé. SiRefresh all views
est désactivé, quittez Xcode et réessayez.la source
Je supprime simplement la vue qui a échoué et appuyez sur commande + Z pour annuler la suppression. Ça marche pour moi.
Si vous modifiez ultérieurement la vue ayant échoué, l'erreur peut se reproduire, recommencez l'opération ci-dessus.
la source
J'ai rencontré ce problème dans CocoaPod 1.5.0. La solution consiste à réinstaller le pod (installation du pod à nouveau) une fois cette erreur affichée ou vous pouvez utiliser CocoaPod 1.4.0 à la place. Cela fonctionne bien dans 1.4.0 (du moins pour moi.)
mettre à jour:
Ajouter le script suivant dans Podfile m'aide à résoudre le problème dans la version 1.5.0
référence: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
la source
s work for me, you should add
termine au dernier du code.L'ajout du code suivant à ma
@IBDesignable
classe a fait l'affaire.la source
UITextView
. (1)init(frame: CGRect, textContainer: NSTextContainer?)
, (2)init?(coder aDecoder: NSCoder)
. Ensuite, reconstruisez et avertissement (erreur) disparu. Pas même besoin de nettoyer le dossier de construction.Pour toute personne -comme moi- qui ne peut pas trouver ce
IBDesignablesAgentCocoaTouch
fichier ou qui essaie de 'Déboguer les vues sélectionnées' de l'éditeur obtient une erreur, voici une autre façon de déboguer ces erreurs "Échec du rendu".Ouvrez l'application 'Console', dans la barre latérale, sélectionnez votre Mac actuel (il sera probablement sélectionné automatiquement par défaut), puis dans la barre de recherche, recherchez "IBSceneUpdate" et appuyez sur Entrée.
De cette façon, chaque fois que vous obtenez une erreur Xcode pour
IBDesignable
ne pas pouvoir effectuer le rendu, vous obtiendrez également une nouvelle entrée "IBSceneUpdate" avec plus de détails sur l'erreur.C'est du moins ainsi que j'ai pu déboguer mes
IBDesignable
erreurs!la source
Si vous utilisez un fichier xib pour uiview personnalisé. Essaye ça:
Changer de
À:
la source
Essayez de désactiver 'Utiliser les variations de traits' (panneau Identité et type) pour tout fichier xib que vous pourriez avoir pour les vues personnalisées utilisées dans votre storyboard.
la source
mon problème a été résolu en supprimant les dossiers (qui sont liés à ce projet) du dossier de données dérivées. vous pouvez le faire en cliquant sur Fichier -> Paramètres du projet -> puis cliquez sur le signe de flèche deside /Users/.../Xcode/DerivedData cliquez sur le dossier DerivedData vous verrez votre projet nommé dossiers supprimer ceux. quittez xcode pour ouvrir votre projet, nettoyez le projet en utilisant cette étape Product-> clean puis construisez le projet: Product-> Build Ceux-ci résoudront ces problèmes.
la source
Bonne réponse fournie par @Maria :
Voie alternative :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
et examinez le journal des incidentsla source
Ouvrez simplement votre storyboard -> Editeur -> Actualisez toutes les vues. Ce travail pour moi.
la source
J'ai essayé de nettoyer et exécuter le projet ne résoudra pas ce problème.
Mais Fermer et rouvrir le projet l'a fait.
la source
Lorsque j'ai débogué cela, j'ai découvert qu'il existe des classes qui modifient l'interface utilisateur. Typiquement marquelabel qui est une sous-classe de UILabel ou de toute autre classe sous-classant UIView et dessinant l'interface utilisateur au moment de l'exécution et en collision avec le moteur Autolayout. Essayez de donner une largeur ou une hauteur fixe pour ces vues personnalisées. Si cela ne résout pas votre problème, essayez les solutions suivantes: -
Solution 1: - Décommentez #use_frameworks dans votre fichier pod.
Solution 2: - Essayez de supprimer les données dérivées
la source
J'ai eu le même problème et je suis venu ici pour essayer de comprendre ce qui s'était passé. J'ai remarqué la réponse la mieux notée et la réponse elle-même ne m'a pas aidé, car IBDesignable n'existait pas dans le dossier du journal et j'ai déjà essayé toutes les autres options, mais dans les commentaires, j'ai remarqué que quelqu'un parlait d'un init frame.
J'ai décidé d'essayer de commenter mon extension IBDesignable pour UIView et cela a instantanément résolu le problème. Donc, pour résoudre ce problème, recherchez l'extension à l'origine du problème et assurez-vous de configurer les inits requis en créant une classe IBDesignable et en fournissant les initialiseurs requis comme suit:
IMPORTANT: n'oubliez pas d'ajouter la nouvelle classe à l'élément sur lequel vous utilisez le designable.
la source
Face à la même erreur: avait personnalisé UITextField et utilisé le générateur d'interface, l'erreur dans la console était -Utilisation de l'initialiseur non implémenté 'init (frame :)' pour la classe "CustomField"
Ajout de l'initialiseur pour corriger l'erreur
la source
J'ai fait face à ce problème après la mise à jour vers la dernière version de XCode. Après avoir essayé plusieurs solutions décrites ci-dessus, je n'ai fait que Xcode, puis j'ai arrêté le système et l'allumer et cela a fonctionné pour moi.
la source
Après avoir apporté les modifications nécessaires, changez le storyboard ou dans mon cas un .xib pour ouvrir dans "XCode 7", enregistrez et fermez. Il ne s'agit que d'une mesure provisoire pour corriger les erreurs, mais vous devrez finalement les corriger ou le faire jusqu'à ce que vous ne soyez plus en mesure de le faire.
la source
Dans mon cas, j'utilisais une bibliothèque qui faisait des sous-classements
UIView
. Il utilisaitIB_DESIGNABLE
et manquait d'appels[super awakeFromNib]
. Une fois que j'ai ajouté l'appel à cette méthode, le bogue a disparu.Je ne sais pas si le fait qu'il soit mis en œuvre a
IB_DESIGNABLE
eu un impact là-dessus .la source
C'est le moyen le plus simple pour moi: ajoutez ce script à votre
Podfile
Podfile:
La source:
Cette solution de contournement pour @IBDesignable peut être trouvée ici: https://github.com/CocoaPods/CocoaPods/issues/5334
la source