2017-04-19 6 views
0

Je suis donc confronté à un problème étrange. J'ajoute à un projet existant commencé par un autre développeur qui a déjà des actifs qui fonctionnent parfaitement bien. J'ai ajouté quelques nouveaux éléments d'image et quand je les référence par leur nom dans le constructeur d'interface (en plaçant un UIImageView) ils fonctionnent parfaitement bien, mais quand j'essaye de créer un UIImage avec le même nom, il retourne toujours zéro .tvOS: l'actif fonctionne lorsqu'il est utilisé dans le constructeur d'interface, mais pas par programmation

let myImage = UIImage(named: "my-image-name") // Always returns nil 

Je l'ai assuré qu'il a la bonne cible, que je n'ai pas les fautes de frappe, etc, mais il ne semble pas seulement de travailler. Pour plus d'informations, il s'agit d'un module de développement local que je suis en train de modifier.

Répondre

1

est l'actif de votre offre principale ou est-ce, en revanche, dans l'un de ces modules de développement local que vous avez mentionné à la fin?

Comme vous pouvez le voir dans la documentation UIImage: https://developer.apple.com/reference/uikit/uiimage/1624154-init

UIImage initialiseur a un second paramètre in pour indiquer le faisceau dans lequel l'actif est effectivement défini, ayant le principal paquet d'applications en tant que valeur par défaut.

Cela signifie que si votre ressource "mon-image-nom" n'est pas définie dans l'ensemble principal, elle ne sera pas trouvée.

Si vous essayez de charger l'actif du même faisceau avec elle est définie, vous pouvez le charger avec le code suivant:

let image = UIImage(named: "my-image-name", in: Bundle(for: self)) 

D'autre part, si vous essayez de charger la actif d'un ensemble différent, vous devez indiquer le paquet.

let image = UIImage(named: "my-image-name", in: Bundle(forClass: CLASSINYOURLOCALFRAMEWORK.self))