2016-09-21 6 views
3

Ich versuche, Bild zu UIImageView hinzuzufügen, aber nachdem ich es UIImageView bin, ist Null. Hier ist mein Code ist:Wie Bild zu UIImageView hinzufügen?

class ViewController: UIViewController { 

    @IBOutlet var myView: UIView! 
    @IBOutlet weak var testImg: UIImageView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     UIGraphicsBeginImageContext(CGSize(width: 500,height: 500)) 
       var path = UIBezierPath() 
     path.lineWidth = 1.0 
     path.moveToPoint(CGPoint(x: 150, y: 150)) 
     var x = 151 
     for ;x<300;x++ 
     { 
      path.addLineToPoint(CGPoint(x: x, y: x)) 
      path.moveToPoint(CGPoint(x: x, y: x)) 
     } 
     path.stroke() 
     let img = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
       testImg = UIImageView(image: img) 
     testImg.frame = CGRect(x: 0,y: 0,width: 500,height: 500) 
     myView.addSubview(testImg) 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

Wenn ich versuche, Rahmen zu setzen für UIImageView, bekam ich diesen Fehler:

fatal error: unexpectedly found nil while unwrapping an Optional value

Wahrscheinlich, ich erstelle nicht richtig Bild.

UPDATE

testImg = UIImageView(image: img) 

Diese Codezeile überschreibt IBOutlet von UIImageView, es zu entfernen und einfach testImg.image = img festen Problem zu tun.

+1

Haben Sie den Ausgang anschließen? – Idan

+0

Ja, beide Ausgänge sind verbunden – Jamil

+0

Ist die Storyboard ViewController-Klasse im Identity Inspector eingerichtet? – Idan

Antwort

0

einfach:

if let image = img { 
    // you don't have to instantiate an imageView again, IBOutlet handles it for you  
    testImg.image = image 
    print("Works") 
    // if you don't see this output in your debug console, the condition never succeeds and an img is really nil 
} 
+0

ist es nicht das gleiche? 'testImg = UIImageView (image: img)' – Jamil

+0

hinzugefügt, wenn Block, der gleiche Fehler beim Einstellen der Bildeigenschaft – Jamil

+0

Sorry, ich habe einen Fehler gemacht, der Code wurde aktualisiert. – pedrouan

2

Einfacher Weg: Ziehen Sie das Bild per Drag & Drop in Ihren Datei-/Projektnavigator auf Xcode.

Wählen Sie die Bildansicht - Dann Attribut prüfen - Unter Bild - Wählen Sie den Dateinamen des Bildes, das Sie laden möchten.

Genießen Sie die Drags und Drop, wann immer Sie können.

Hardway:

if let filePath = Bundle.main.path(forResource: "imageName", ofType:  "jpg"), let image = UIImage(contentsOfFile: filePath) { imageView.contentMode = .scaleAspectFit 
    imageView.image = image 
} 
+0

Ich habe keine Datei, ich erstelle Bild über UIBezierPath – Jamil

+0

Sie meinen, ich kann Bild nicht über Code erstellen und es zu UIImageView hinzufügen? – Jamil

+0

Entschuldigung, ich wollte sagen, kann nicht helfen. – DotNetChic

0

Der Fehler sollte auf die Art und Weise Sie drücken oder die ViewController präsentieren in Beziehung gesetzt werden. Scheint, dass der Ausgang noch nicht erstellt wurde, wenn Sie ihn anzeigen oder präsentieren. Sollte verwenden instantiateViewControllerWithIdentifier wie unten Beispiel

let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("YourStoryBoardId") 
self.navigationController?.pushViewController(viewController!, animated: true) 
+0

Ich habe nur eine Ansicht, diese beiden Zeichenfolgen nach 'super.viewDidLoad()' hinzugefügt, nichts geändert. Ich denke, es ist ein Problem mit UIImageView – Jamil

Verwandte Themen