Я только начинаю с ReactiveX в существующем проекте Xamarin.iOS.Я хотел адаптировать свое предыдущее решение searchcontroller / uitableview к тому, в котором для практики использовался реактив.
Вот мой нынешний подход:
var dataStream =
Observable
.FromEventPattern<UISearchBarTextChangedEventArgs>(
ev => searchController.SearchBar.TextChanged += ev,
ev => searchController.SearchBar.TextChanged -= ev)
.Select(o => o.EventArgs.SearchText)
.DistinctUntilChanged()
.ObserveOn(SynchronizationContext.Current)
.Synchronize()
.Select(t =>
{
var lookup = new Lookup(prefix: t);
smartyStreetsClient.Send(lookup);
var data = new List<Suggestion>(lookup.Result);
return data.ToObservable().ObserveOn(SynchronizationContext.Current);
})
.Switch();
dataStream.Subscribe(o =>
{
suggestions.Add(o);
TableView.Source = new ATableSource(suggestions);
TableView.ReloadData();
});
Хотя сначала это работает, абонент не слушаетв любых других изменениях в моей наблюдаемой, кроме первой (наблюдатель успешно запускается при каждом изменении текста).Спасибо за любую помощь.