初学swift之KVO
KVO相当于给一个已有对象的属性添加一个属性观察器
KVO三步
1.注册
2.监听
3.移除
//通过xib创建一个slider默认值为0.5
@IBOutlet weak var slider: UISlider!
//注册(被监听的是slider的value属性)
/*NSKeyValueObservingOptions的属性
New:提供更改前的值
Old:提供更改后的值
Initial:观察最初的值(在注册观察服务时会调用一次触发方法)
Prior:分别在值修改前后触发方法(即一次修改有两次触发)*/
slider.addObserver(self, forKeyPath:"value", options:NSKeyValueObservingOptions.new, context:nil)
//监听slider的value属性
/*
keyPath与注册里的forKeyPath相同
*/
overridefuncobserveValue(forKeyPath keyPath:String?, of object:Any?, change: [NSKeyValueChangeKey:Any]?, context:UnsafeMutableRawPointer?) {
ifletkey = keyPath{
ifkey =="value"{
ifletvalues =slider.value(forKey:"value")as?Double{
//移除
slider.removeObserver(self, forKeyPath:"value")
print(values)
}
}
}
}
最后效果:当移动slider的时候,slider的value发生改变,打印“0.5”调
因为只调用了一次监听事件之后就移除的监听事件,所以只答应了一次
/*写文章的目的只因学习还有记录笔记,如果大佬看见了有什么不对的地方,可以评论,共同学习,但是由于是新手的原因,请非礼勿骂,共同创建文明社会*/
网友评论