Est-il possible de lire le nom d'une image UIImageView actuellement stockée dans ImageView?
J'espérais que vous pourriez faire quelque chose comme ça, mais je ne l'ai pas compris.
NSString *currentImageName = [MyIImageView getFileName];
Est-il possible de lire le nom d'une image UIImageView actuellement stockée dans ImageView?
J'espérais que vous pourriez faire quelque chose comme ça, mais je ne l'ai pas compris.
NSString *currentImageName = [MyIImageView getFileName];
Nope. Vous ne pouvez pas le faire.
La raison en est que l' UIImageView
instance ne pas stocker un fichier image. Il stocke un affiche un UIImage
de l'instance. Lorsque vous faites une image à partir d'un fichier, vous faites quelque chose comme cela:
UIImage *picture = [UIImage imageNamed:@"myFile.png"];
Une fois que ceci est fait, il n'y a plus aucune référence au nom du fichier. L' UIImage
instance contient des données, indépendamment de l'endroit où il l'a obtenu. Ainsi, l' UIImageView
ne pouvait pas connaître le nom de fichier.
Aussi, même si tu le pouvais, tu n'aurais jamais obtenir le nom de fichier info à partir d'un point de vue. Qui rompt MVC.
Non non non... en général, ces choses sont possibles. Il va tout simplement vous faire sentir comme une sale personne. Si vous devez absolument, faites ceci:
Créer une catégorie avec votre propre mise en œuvre de l' +imageNamed:(NSString*)imageName
que des appels par le biais de la mise en œuvre existantes et utilise la technique identifié ici (Comment puis-je utiliser objc_setAssociatedObject/objc_getAssociatedObject l'intérieur d'un objet?) pour associer de façon permanente imageName
avec le UIImage objet qui est retourné.
L'utilisation de la Méthode Swizzling de swap de la condition de la mise en œuvre de l' imageNamed:
de votre mise en œuvre de la méthode de la table de recherche de l'Objective-C runtime.
Accès le nom que vous avez associés à la UIImage instance (à l'aide objc_getAssociatedObject) quand vous le voulez.
Je peux confirmer que cela fonctionne, avec la mise en garde que vous ne pouvez pas obtenir les noms des UIImage est chargé des Plumes. Il semble que les images chargées à partir de Plumes ne sont pas créés par le biais de toute norme appels de fonction, donc c'est vraiment un mystère pour moi.
Je pars de la mise en œuvre jusqu'à vous. Copier-coller du code de la vis avec l'Objective-C runtime est une très mauvaise idée, donc réfléchissez bien à vos besoins du projet et de mettre en œuvre ce que si vous devez.
Il n'est pas natif façon de le faire; cependant, vous pouvez facilement créer ce problème vous-même.
Vous pouvez sous-classe UIImageView
et ajouter une nouvelle variable d'instance:
NSString* imageFileName;
Ensuite, vous pouvez remplacer setImage
, le premier paramètre imageFileName
pour le nom de fichier de l'image, de la configuration, puis en appelant [super setImage:imageFileName]
. Quelque chose comme ceci:
-(void) setImage:(NSString*)fileName
{
imageFileName = fileName;
[super setImage:fileName];
}
Juste parce qu'il ne peut pas être fait en natif ne signifie pas qu'il n'est pas possible :)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.