public override void ViewDidLoad() { base.ViewDidLoad(); Title = Resources.LoginForgotPassword; ResetPasswordButton.SetTitle(Resources.GetPasswordResetLink, UIControlState.Normal); EmailTextField.Placeholder = Resources.EmailAddress; SuccessMessageLabel.Text = Resources.PasswordResetSuccess; prepareViews(); //Text ViewModel.ErrorMessage .Subscribe(errorMessage => { ErrorLabel.Text = errorMessage; ErrorLabel.Hidden = string.IsNullOrEmpty(errorMessage); }) .DisposedBy(DisposeBag); EmailTextField.Rx().Text() .Select(Email.From) .Subscribe(ViewModel.Email.OnNext) .DisposedBy(DisposeBag); ViewModel.Reset.Executing .Subscribe(loading => { UIView.Transition( ResetPasswordButton, Animation.Timings.EnterTiming, UIViewAnimationOptions.TransitionCrossDissolve, () => ResetPasswordButton.SetTitle(loading ? "" : Resources.GetPasswordResetLink, UIControlState.Normal), null ); }) .DisposedBy(DisposeBag); //Visibility ViewModel.PasswordResetSuccessful .Subscribe(DoneCard.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.PasswordResetSuccessful .Invert() .Subscribe(ResetPasswordButton.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); ViewModel.PasswordResetSuccessful .Where(s => s == false) .Subscribe(_ => EmailTextField.BecomeFirstResponder()) .DisposedBy(DisposeBag); ViewModel.Reset.Executing .Subscribe(ActivityIndicator.Rx().IsVisibleWithFade()) .DisposedBy(DisposeBag); //Commands ResetPasswordButton.Rx() .BindAction(ViewModel.Reset) .DisposedBy(DisposeBag); }