2016-09-21 4 views
3

Я пытаюсь добавить изображение в UIImageView, но после этого я делаю это UIImageView is nil. Вот мой код:Как добавить изображение в UIImageView?

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. 
    } 
} 

Когда я пытаюсь установить рамки для UIImageView, я получил эту ошибку:

fatal error: unexpectedly found nil while unwrapping an Optional value

Возможно, я не создавать изображения правильно.

UPDATE

testImg = UIImageView(image: img) 

Эта строка кода переписывает IBOutlet из UIImageView, удаляя его и делать просто testImg.image = img исправлена ​​ошибка.

+1

Подключили ли выход? – Idan

+0

Да, оба выхода подключены – Jamil

+0

Является ли класс раскадровки ViewController настроенным в инспекторе идентификации? – Idan

ответ

0

Simply:

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

не то же самое? 'testImg = UIImageView (image: img)' – Jamil

+0

добавлен, если блок, такая же ошибка при настройке свойства изображения – Jamil

+0

Извините, я совершил ошибку, код был обновлен. – pedrouan

2

Простой способ: перетащить это изображение в файл/навигатор проекта на Xcode.

Выберите вид изображения - Затем проверьте атрибут - Под изображением - выберите имя файла изображения, которое вы хотите загрузить.

Наслаждайтесь ударами и каплями, когда можете.

Hardway:

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

У меня нет файла, я создаю изображение через UIBezierPath – Jamil

+0

Вы имеете в виду, что я не могу создать изображение с помощью кода и добавить его в UIImageView? – Jamil

+0

Извинения, я собирался сказать, не может помочь. – DotNetChic

0

Ошибка должен быть связан с тем, как вы толкнуть или представите ViewController. Кажется, что розетка еще не создана, когда вы показываете или представляете ее. Если использовать instantiateViewControllerWithIdentifier, как показано ниже, например

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

У меня есть только один вид, добавленные эти две строки после 'super.viewDidLoad()', ничего не изменилось. Я думаю, что это проблема с UIImageView – Jamil

Смежные вопросы