首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift Bond 5从4双向迁移

Swift Bond 5从4双向迁移
EN

Stack Overflow用户
提问于 2016-09-22 20:11:39
回答 1查看 694关注 0票数 1

我正在尝试在我的一个项目中切换到Swift Bond5和Swift 3。我在双向绑定方面遇到了问题。我如何转换下面的代码,这样当我的滑块改变时,它会发出不同的信号,并设置它的值,然后设置为半径可观测值。在旧的Bond4和Swift 2.3中,一切都运行得很好,但我不知道如何处理这种迁移。

代码语言:javascript
复制
let radiusSlider: UISlider = /* slider initialisation */
let radius = Observable<Float>(10.0)

let stepValue:Float = 50.0
let sliderStepObserver = radiusSlider.bnd_value.map { roundf($0/stepValue)*stepValue }.distinct()
radiusSlider.value = radius.value
radius.bidirectionalBind(to: sliderStepObserver) /* here is the problem */

错误消息显示:

代码语言:javascript
复制
Argument type 'Signal<Float, DynamicSubject.Error>' (aka 'Signal<Float, NoError>') does not conform to expected type 'BindableProtocol'

所以信号不再是可绑定的。有没有人知道如何转换这段代码,以便双向绑定仍然有效?

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 04:28:12

双向绑定到转换后的信号/可观察对象并没有实际意义,因为它需要反向转换才能将事件传播回来。

您可能需要建立以下绑定,而不是双向绑定:

代码语言:javascript
复制
radius.bind(to: radiusSlider)
sliderStepObserver.bind(to: radius)

此外,您还需要删除distinct操作符,否则单步执行将无法正常工作。它不工作的原因是用户永远不会停止触摸屏,所以我们也必须永远不要停止将滑块位置更新为步长值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39638724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档