С ReactiveCocoa привязать к обратному BOOL

Я хотел бы сделать противоположность следующего кода:

RAC(self.activityIndicator, hidden) = RACObserve(self.playButton, selected);

Когда кнопка воспроизведения выбрана, индикатор активности НЕ должен быть скрыт.

Каков наилучший способ сделать это с помощью ReactiveCocoa?

2 ответа

Решение

Для этого есть оператор сигнала, -not,

RAC(self.activityIndicator, hidden) = [RACObserve(self.playButton, selected) not];

map: это то, что вам нужно.

RAC(self.activityIndicator, hidden) = [RACObserve(self.playButton, selected) map:^id(id value) {
    return @(![value boolValue]);
}];

Это преобразует сигнал в другой в зависимости от того, что вы возвращаете из функции карты.

В более новых версиях ReactiveCocoa/ReactiveSwift (v6.2.1) это будет выглядеть так:

var isButtonEnabled = MutableProperty<Bool>(true)

myImageView.reactive.isHidden <~ isButtonEnabled.negate()

Другие вопросы по тегам