public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); var tableViewSource = new UserTableViewSource(Locator); UserTableView.Source = tableViewSource; UserTableView.RowHeight = UITableView.AutomaticDimension; UserTableView.EstimatedRowHeight = 150; UserTableView.ReloadData(); }
public override void ViewDidLoad() { base.ViewDidLoad(); var tableViewSource = new UserTableViewSource(TableView, ViewModel.Items); TableView.Source = tableViewSource; Appearing .Take(1) .Select(_ => ViewModel.LoadCommand.Execute()) .Switch() .Take(1) .Catch(Observable.Return(false)) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(SetItemsPresent); this.WhenActivated(d => { d(_repositorySearchBar.GetChangedObservable() .Subscribe(x => ViewModel.SearchText = x)); d(ViewModel.ItemSelected .Select(x => new UserViewController(x.User)) .Subscribe(x => NavigationController.PushViewController(x, true))); d(ViewModel.WhenAnyValue(x => x.HasMore) .Subscribe(x => TableView.TableFooterView = x ? _loading : null)); d(tableViewSource.RequestMore .InvokeReactiveCommand(ViewModel.LoadMoreCommand)); d(ViewModel.LoadCommand .Select(_ => ViewModel.Items.Changed) .Switch() .Select(_ => Unit.Default) .Throttle(TimeSpan.FromMilliseconds(100), RxApp.MainThreadScheduler) .Where(_ => TableView.LastItemVisible()) .InvokeReactiveCommand(ViewModel.LoadMoreCommand)); d(ViewModel.LoadCommand.Merge(ViewModel.LoadMoreCommand) .Select(_ => Unit.Default) .Throttle(TimeSpan.FromMilliseconds(100), RxApp.MainThreadScheduler) .Where(_ => TableView.LastItemVisible()) .InvokeReactiveCommand(ViewModel.LoadMoreCommand)); }); }