2017-10-02 1 views
-1

J'ai une classe IBDesignable sur laquelle je travaille, et j'ai remarqué que si j'essaie d'ajouter un protocole à la classe, cela provoque une erreur "Impossible de rendre et de mettre à jour autolayout status "L'ajout d'un délégué à la classe IBDesignable provoque le non-rendu de l'interface utilisateur

Si je supprime le protocole, cela fonctionne très bien, mais pour certaines des fonctions que j'essaierai de créer, ce serait très utile. Exemple de code que vous pouvez utiliser pour recréer l'erreur

import UIKit 

protocol TestProtocol {} 

@IBDesignable class TestDesignableButton: UIButton {   
    var delegate: TestProtocol? 
} 

Est-ce que quelqu'un sait ce qui cause cela? Et savez-vous s'il existe un moyen de contourner ce problème?

Merci à l'avance

+0

C'est un bug qui se produit souvent avec 'IBDesignable's. J'évite juste de les utiliser en raison de leur bugginess. – the4kman

+0

Y a-t-il un moyen de supprimer l'erreur? La classe IBDesignable fonctionne toujours avec la méthode de délégué en place. Je peux lancer l'application et ça a l'air bien, juste l'élément de l'interface utilisateur ne s'affiche pas dans le storyboard correctement lorsque j'ajoute le délégué – AdamM

Répondre

2

Modifier votre déclaration de protocole:

@objc protocol TestProtocol {} 

Ici, il est, en travaillant dans mes tests (j'ai changé votre code un peu, mais pas beaucoup - faire juste assez que nous avons les os nus travaillent). Notez que le bouton désignable est en fait vert; ce ne serait pas si le code IBDesignable ne fonctionnait pas. En outre, il dit "À jour" dans l'inspecteur à droite.

enter image description here

+0

Awesome, une telle solution simple. Salutations pour votre aide! – AdamM