2017-04-18 7 views
1

UIImageViewでプログラムをプログラムで変更する方法を知っています。はUIImageでオプションのアンラップを外しています。

if let image = UIImage(named: "mouse.jpg") { 
    imageView.image = image 
    print("image set") 
} 

が、オプションの致命的な例外をアンラップしながら、それが見つかりました。nilが原因:私はこれまでのところ、これを試してみました。

mouse.jpgは、スワイプファイルと同じフォルダにあり、Xcodeのインスペクタでイメージビューイメージとして設定できます。

このような場合は、別のコードをラップ:

if let iv = imageView{ 
    if let image = UIImage(named: "mouse.jpg"){ 
     iv.image = image 
    } 
} 

がnilエラーを修正しますが、ストーリーボードで設定されたものからまったく絵を変更しません。 if内のこのコードは条件がここに正しく初期化UIImageを必要として、それはむしろあなたのImageViewの参照ではなく、画像自体に問題がある可能性がありますように見える実行した場合

任意のアイデアは

+6

このコードは、 'imageView'が' nil'の場合にのみクラッシュする可能性があります。 IBの接続を確認してください。 – vadian

+0

質問を非常に異なるものに更新したので再開しました。 'iv.image = image'という行が呼び出されていることを確認しましたか?あなたのコンセントが接続されていないように聞こえます。 – rmaddy

+0

ええ、申し訳ありませんが、私は最初に質問をよく聞いていませんでした。私はこの行の下にこのコードが印刷されたときに印刷する印刷権を持っていますので、そう呼ばれます。 – Blake

答えて

4

参考になります。私はvar imageView: UIImageView!のような暗黙的にアンラップされたオプションを使ってimageViewへの参照を格納していると思います。

@IBOutletを使用している場合は、正しく接続されていることを確認しましたか? imageプロパティを設定する前に実際のインスタンスがUIImageViewになっていますか?

+0

これです。わかりやすくするために、xcodeの右上にある「2つのサークル」(ショーアシスタンスエディタ)をクリックして、ストーリーボードと関連するView Controllerを開いてください。ストーリーボード内のimageViewからCtrl +ドラッグして、View Controllerに適切なコンセントを作成します。さて、あなたがここのコードでそれを参照するとき、それは無条件であってはなりません。 – Meshach

関連する問題