我如何才能didSet
识别何时imageView.image
已设置?它似乎只在初始化期间被调用。
@IBOutlet weak var imageView: UIImageView! {
didSet {
//do stuff
}
}
我如何才能didSet
识别何时imageView.image
已设置?它似乎只在初始化期间被调用。
@IBOutlet weak var imageView: UIImageView! {
didSet {
//do stuff
}
}
didSet
只会在您设置imageView
自身时调用。例如:
imageView = UIImageView()
这实际上没有任何意义,因为您已经有一个图像视图并且它工作得很好。您要做的是监视图像视图属性之一的变化。
为此,请尝试创建 的子类UIImageView
,然后观察其image
. 不要忘记在情节提要中设置图像视图的自定义类,然后重新连接插座。
class CustomImageView: UIImageView {
override var image {
didSet {
/// do stuff
}
}
}
如果您需要在视图控制器中执行一些代码,请尝试使用闭包。
class CustomImageView: UIImageView {
var imageSet: (() -> Void)?
override var image {
didSet {
imageSet?()
}
}
}
class ViewController: UIViewController {
@IBOutlet weak var imageView: CustomImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView.imageSet = {
/// do stuff
}
}
}
或者,您可以使用KVO。