2016-09-22 3 views
1

Я пытаюсь переключиться на Swift Bond 5 и Swift 3 в одном из моих проектов. У меня проблема с привязкой по двум направлениям. Как я могу преобразовать код ниже, поэтому, когда мой слайдер меняет его, он генерирует разный сигнал пошагово и устанавливает его значение, равное значению радиуса. В старых Bond 4 и Swift 2.3 все работало нормально, но я не знаю, как справиться с такой миграцией.Swift Bond 5 переход из 4 двунаправленных

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 */ 

Сообщение об ошибке говорит:

Argument type 'Signal<Float, DynamicSubject.Error>' (aka 'Signal<Float, NoError>') does not conform to expected type 'BindableProtocol' 

Так что сигнал не Привязываемое больше. Есть ли у кого-нибудь идеи, как преобразовать этот кусок кода, чтобы двунаправленная привязка все еще работала?

ответ

1

Двунаправленная привязка к преобразованному сигналу/наблюдаемому на самом деле не имеет смысла, поскольку для распространения событий назад потребуются обратные преобразования.

Вместо двунаправленного связывания, вы, вероятно, хотите, чтобы установить следующие привязки:

radius.bind(to: radiusSlider) 
sliderStepObserver.bind(to: radius) 

Кроме того, вам необходимо удалить, что distinct оператора или шаговое не будет достаточно работы. Причина, по которой он не будет работать, заключается в том, что пользователь никогда не перестает касаться экрана, поэтому мы также не должны останавливать обновление положения ползунка до значения шага.

+0

Благодарим вас за ввод. Да, похоже, это не имеет смысла. Единственный думает, что материей в этом случае было обновление «радиуса» наблюдаемого с сигналом, испускаемым из ползунка. Другое направление вообще не требуется. Я не знаю, почему оригинальный разработчик сделал это правильно. Спасибо, в любом случае! –