コード例 #1
0
        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();
        }
コード例 #2
0
        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));
            });
        }