Je suis récemment passé à Xcode 8 et j'ai des problèmes avec le Storyboard.
Si j'ouvre le projet et que le Storyboard n'est pas ouvert, il se compilera et fonctionnera parfaitement. Une fois que j'ai ouvert le Storyboard, plusieurs erreurs se produisent sur IB Designables, comme indiqué ci-dessous.
Ces vues sont les seules vues utilisant des vues personnalisées à partir de TextFieldEffects
et BEMCheckbox
que j'ai importées à l'aide de Cocoapods.
Vous pouvez essayer l'une des solutions suivantes pour en déterminer la cause:
recherchez les journaux IBDesignablesAgentCocoaTouch
dans ce répertoire: ~/Library/Logs/DiagnosticReports
et voyez la cause.
Accédez à l'éditeur -> Déboguer la vue sélectionnée tout en sélectionnant votre @IBDesignable UIView
dans votre storyboard et consultez le suivi de la pile.
Supprimer le dossier Derive Data.
Xcode Preference -> Location -> Derived Data
/Users/YourMacName/Library/Developer/Xcode/DerivedData
Nettoyez votre projet Shift
+ Command
+ Alt
+ K
.
Construisez votre projet Command
+ B
.
J'ai résolu le problème en procédant comme suit:
File > Workspace settings
.DerivedData
.DerivedData
et supprimez le dossier correspondant à votre projet.Editor > Refresh all views
.Mise à jour
Parfois, il suffit parfois d'aller directement à Editor > Refresh all views
. Si Refresh all views
est désactivé, quittez Xcode et réessayez.
Je viens de supprimer 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 défaillante, l'erreur peut se reproduire, procédez de la manière décrite ci-dessus.
J'ai fait face à ce problème dans CocoaPod 1.5.0. La solution consiste à réinstaller à nouveau le pod (à nouveau, à l'installer à nouveau) une fois cette erreur affichée ou vous pouvez utiliser CocoaPod 1.4.0 à la place. Cela fonctionne très bien dans 1.4.0 (au moins pour moi.)
mettre à jour:
Ajouter le script suivant dans Podfile m'aide à résoudre le problème en 1.5.0
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete('CODE_SIGNING_ALLOWED')
config.build_settings.delete('CODE_SIGNING_REQUIRED')
end
end
référence: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
Essayez de désactiver "Utiliser les variantes de trait" (panneau Identité et Type) pour tout fichier xib que vous pourriez avoir pour des vues personnalisées utilisées dans votre storyboard.
mon problème a été résolu en supprimant des dossiers (liés à ce projet) du dossier de données dérivé. vous pouvez le faire en cliquant sur Fichier -> Paramètre de projet -> puis cliquez sur le signe fléché de /Users/.../Xcode/DerivedDataclick DerivedData dossier, vous verrez les dossiers nommés de votre projet les supprimer . quittez xcode pour ouvrir votre projet, nettoyez le projet en utilisant cette étape Produit-> nettoyer puis générez le projet: Produit-> Construire Ces problèmes résoudront ce problème.
L'ajout du code suivant à ma classe @IBDesignable
a fait l'affaire.
override init(frame: CGRect) {
super.init(frame: frame)
}
Il suffit d'ouvrir votre storyboard -> Editeur -> Actualiser toutes les vues. .__ Ce travail pour moi.
Quand j'ai débogué ceci j'ai découvert qu'il y a quelques classes qui modifient l'interface utilisateur. Généralement, marquelabel est une sous-classe d'UILabel ou de toute autre classe qui sous-classe UIView et dessine ui au moment de l'exécution et se heurte au 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
Même erreur: si UITextField avait été personnalisé et que le constructeur de l'interface avait été créé, l'erreur dans la console était -Use de l'initialiseur non implémenté 'init (frame :)' pour la classe "CustomField"
Ajout de l'initialiseur pour corriger l'erreur
Dans mon cas, j'utilisais une bibliothèque qui sous-classait UIView
. Il utilisait IB_DESIGNABLE
et manquait l'appel de [super awakeFromNib]
. Une fois que j'ai ajouté l'appel à cette méthode, le bogue a disparu.
Je ne suis pas sûr que le fait qu'il implémente IB_DESIGNABLE
ait eu un impact à cet égard.
J'avais le même problème et je suis venu ici pour essayer de comprendre ce qui s'est passé. J'ai remarqué la réponse la mieux notée et la réponse elle-même ne m'aidait pas, car IBDesignable n'existait pas dans le dossier du journal et j'avais 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 le problème a été résolu instantanément. Donc, pour résoudre ce problème, recherchez l'extension à l'origine du problème et assurez-vous de configurer les entrées requises en créant une classe IBDesignable et en fournissant les initialiseurs requis comme suit:
@IBDesignable class RoundedView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
sharedInit()
}
func sharedInit() {
}
}
IMPORTANT: n'oubliez pas d'ajouter la nouvelle classe à l'élément sur lequel vous utilisez le designable.
J'ai fait face à ce problème après la mise à jour vers la dernière version de XCode. Après avoir essayé les solutions multiples décrites ci-dessus, je ne fais que très bien Xcode, puis je coupais le système et l'allumais, ce qui a fonctionné pour moi.
J'ai essayé de nettoyer et exécuter le projet ne résoudra pas ce problème.
Mais fermer et rouvrir le projet fait.
Après avoir apporté les modifications nécessaires, modifiez le storyboard ou, dans mon cas, un fichier .xib pour qu'il soit ouvert dans "XCode 7", enregistrez et fermez. Il ne s’agit que d’une mesure palliative pour remédier aux erreurs, mais vous devrez en définitive les corriger ou le faire jusqu’à ce que vous ne puissiez plus le faire.
Pour quiconque, comme moi, qui ne trouve pas ce fichier IBDesignablesAgentCocoaTouch
ou lorsqu’il essaie de "déboguer les vues sélectionnées" dans l’éditeur obtient une erreur, voici un autre moyen de déboguer ces erreurs "Échec du rendu".
Ouvrez l'application "Terminal", 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. Chaque fois que vous obtenez une erreur Xcode pour un IBDesignable ne pouvant pas être restitué, vous obtenez également une nouvelle entrée "IBSceneUpdate" avec plus de détails sur l'erreur. C’est du moins comment j’ai pu déboguer mes erreurs IBDesignable
!
Si vous utilisez un fichier xib pour uiview personnalisé. Essaye ça:
Changer de
Bundle.main.loadNibNamed("UserView", owner: self, options: nil)
À:
let bundle = Bundle(for: UserView.self)
bundle.loadNibNamed("UserView", owner: self, options: nil)