Cours 1H sur iPhone = Problème imageView.image

#1

Bonjour à tous,

commencement difficile pour ma part : Ultra beginner, pas de bol, premier essai, premier problème…

Je suis pas à pas la vidéo pour créer le changement d’image, et pas moyen.

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super .viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func changeImage( _ sender: Any ) {
imageView.image = imageLiteral(resourceName: “Photo2 1x.jpg”) **

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

**
}
}

Je suis pourtant pas à pas le code, qui est exactement le même mais …bug…
Une idée ??

Merci à vous.

Elouan

#2

Hello @elouanpreaud

Je viens de tester chez moi, mais je n’ai pas cette erreur.

La seule différence entre ton code et le mien, c’est que j’ai un # devant le imageLiteral (et que je n’ai pas indiquer l’extension de la photo), comme ceci:

imageView.image = #imageLiteral(resourceName: "Photo2 1x") 

Du coup, ma capture d’écran devient:

(Note le fait que l’image est bien affichée, même dans mon code, ce qui n’est pas le cas chez toi on dirait, et je pense que le problème pourrait venir de là).

Autre chose aussi: où as-tu stocké tes images?
Dans mon cas, elles sont situées dans le dossier Assets:

37%20am

PS: Attention à l’indentation de ton code, c’est une bonne habitude à prendre, sinon, lorsque tes projets vont devenir plus conséquent, tu risques de ne plus t’y retrouver (où commence et où se termine telle ou telle fonction par exemple).

Bonne journée,

Alexandre

#4

Mmh, étrange…

Je vais rapidement faire le cours d’une heure et je vous tiens au courant.

Bonne journée,

Alexandre

#5

Bon, je viens de faire les manipulations indiqués dans la vidéo, et j’ai effectivement ceci:

35%20am

Mais j’ai une solution! :grin:

En regardant le code dans xCode, voici ce que je vois:

19%20am

L’image n’est pas affichée par xCode, ce qui provoque ce problème.
La solution pour résoudre ce problème est simple: il suffit de double cliquer sur cette icône pour afficher le panneau qui montre les différentes images:

58%20am

Une fois que le panneau est affiché, tu peux choisir l’image que tu souhaites afficher.
Le code dans xCode devient alors:

45%20am

Ce qui résout le problème rencontré.
Si tu run le projet à nouveau, tout devrait fonctionner.

Tiens moi au courant, chez moi, c’est nickel :sunglasses:

Bonne journée,

Alexandre

#6

@Alexandre Effectivement c’est bien une solution car, depuis Xcode 10 on ne peut plus utiliser l’autocompletion comme dans le cours de 1h.

@elouanpreaud Donc, tu peut utiliser la solution d’Alexandre sachant, qu’il faut que tu aies l’aperçu de l’image si, c’est la montagne avec le soleil comme tu as sur ta capture ce n’est pas bon.

Pour que les choses soit clair,
Méthode 1 : imageView.image = Image Literal puis Double cliquer sur l’icon et choisir l’image.
Méthode 2 : imageView.image = puis vie la Media Library (shift+cmd+m) ou un clic long sur les accolade des snippets (en haut à droite) et choisir l’image.
Méthode 3 : imageView.image = UIImage(named:"Nom De l'Image")

1 Like
#7

Bonjour,

J’ai le même problème sur le cours de 1h mais les solutions ne fonctionnent pas même quand je vois l’image dans le code après avoir fait la manipulation, j’ai toujours le message d’erreur. Est-ce qu’il y a une autre solution ?

Si ça peut aider j’ai le message suivant en rouge qui s’affiche quand je lance : Thread 1: signal SIGABRT

#8

Salut @ChrisTy , tu dois avoir un autre problème car, tu as un problème aux lancement SIGABRT (Signal Abort).

As tu supprimé un bouton ou outlet que tu avais mis ?

#9

Oui c’est exactement ça, j’ai repris tous boutons a outlet a zéro tout refait et ça fonctionne.

Merci pour la rapidité de la réponse

#10

Merci à tous!! Vos réponses sont excellente pour l’apprentissage!

#11

Bonjour à tous,

effectivement XCode a pas mal changé depuis que j’ai enregistré de cours de 1H.
J’ai prévu de le reprendre cet été en faisant le cours iOS 13 et XCode 11. Pour le moment les solutions de @anthonyfassler1 et @Alexandre sont super :+1: