В моем приложении у меня есть сигнал, который вызывает асинхронную сетевую активность через flattenMap
. Я хочу показать индикатор загрузки во время выполнения сетевой активности.ReactiveCocoa - Изменение побочных эффектов в сигналы
Мое текущее решение работает просто отлично:
[[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
doNext:^(id x) {
// show the loading indicator as a side-effect
self.loadingIndicator.hidden = NO;
}]
flattenMap:^id(id x) {
return [self doSomethingAsync];
}]
subscribeNext:^(NSNumber *result) {
// hide the indicator again
self.loadingIndicator.hidden = YES;
// do something with the results
}];
Это работает, но я хотел бы изменить код выше, так что hidden
свойство индикатора загрузки может быть установлен с помощью сигнала.
Возможно ли это?
В другом месте моего приложения у меня есть более сложные требования, когда видимость элемента зависит от нескольких разных «событий», возможность их компоновки через сигналы будет намного лучше.
+1 Спасибо за это - я попытаюсь обернуть голову вокруг вашего ответа и в ближайшее время попробовать. Очень признателен. – ColinE
Вы ставите! Я рад, что вы воскресили этот вопрос; Я видел это на днях, но вы удалили его, прежде чем я смог вернуться к ответу. –
Я удалил его, потому что я * думал * Я нашел ответ, см. Эту проблему в github https://github.com/ReactiveCocoa/ReactiveCocoa/issues/469, однако с RC2.0 некоторые из методов, описанных в ответе, больше недоступно. Разрыв широко распространенных изменений от 1.0-2.0 может сделать его немного сложным изучением RC ... и с RC3.0 они планируют продолжить тренд с некоторыми дальнейшими крупномасштабными изменениями разрыва. Во всяком случае - это отличная инфраструктура. – ColinE