2016-05-19 7 views
-1

この例ではなぜそれを設定したのか理解しようとしています。swift iosこの例ではsetを使用しました

コード画像(画像スライダ)を表示PageControllerでから、そのピース:

import UIKit 

class PageItemController: UIViewController { 

    // MARK: - Variables 
    var itemIndex: Int = 0 
    var imageName: String = "" { 

     didSet { 

      if let imageView = contentImageView { 
       imageView.image = UIImage(named: imageName) 
      } 

     } 
    } 

    @IBOutlet var contentImageView: UIImageView? 

    // MARK: - View Lifecycle 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(imageName) 
     contentImageView!.image = UIImage(named: imageName) 

    } 
} 

Iは、同じコードが、wihtout didSetを試みていると私は、速度などの任意の変化に気付くいけない、なぜそれが中古?

+1

最初の読み込み中に期待どおりに動作します。しかし、didSetを削除して、それを行う追加のコードがない場合、imageNameが変更されると、イメージは変更されません。 didSetは、imageNameが変更されたときに実際のイメージも変更するかどうかを確認します。それ以外の場合は、imageNameを変更するコードも実際のイメージを変更する必要があります。もちろん、ビューのライフタイム中にイメージが変更された場合もあります。 – smozgur

答えて

1

実際にdidSetは、imageNameが設定されている場合、imageName文字列でuiimageを設定します。 あなたはその後、他の任意のビューからimagenameのを割り当てている場合は、次のようなコードを使用する必要があります:あなたはimageNameを設定して表示される画像を変更することができますdidSet使用する場合

override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
0

代わりに、 let image = UIImage(named: "*Name of image in assets*") を使用し、実際の画像がプロジェクトアセットに含まれていることを確認してください。

関連する問題