2017-10-13 17 views
-3

je suis arrivé ici une telle erreur:NavigationBar image

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

Quel est le problème avec mon code? J'essaie d'ajouter une image à navcontroller, j'ai ici l'image que vous pouvez voir.

func addNavBarImage() { 
    let nc = navigationController! 
    let image = UIImage(named: "2.png") 
    let imageView = UIImageView(image: image) 

    let bwidth = nc.navigationBar.frame.size.width 
    let bheight = nc.navigationBar.frame.size.height 

    let bannerx = bwidth/2 - (image?.size.width)!/2 
    let bannery = bheight/2 - (image?.size.height)!/2 

    imageView.frame = CGRect(x: bannerx, y: bannery, width: bwidth, height: bheight) 
    imageView.contentMode = .scaleAspectFit 
    navigationItem.titleView = imageView 
} 
+0

Quelle ligne provoque exactement l'erreur? – rmaddy

Répondre

0

Vous obtenez ce message d'erreur lorsque vous ne pas avoir une image legit ajouté à votre let image = UIImage(named: "2000"). C'est nil. Votre code se bloque sur let bannerx = bwidth/2 - (image?.size.width)!/2. Assurez-vous d'avoir la bonne image avant de poursuivre votre exécution après cette ligne.

Remplacer:

let image = UIImage(named: "2.png") 

Avec:

guard let image = UIImage(named: "2") else { return } 

En faisant cela, vous ne pas besoin de la forcer à utiliser en option les lignes suivantes, donc remplacent les lignes ci-dessous pour bannerx et bannery avec le vôtre :

let bannerx = bwidth/2 - (image.size.width)/2 
let bannery = bheight/2 - (image.size.height)/2