Ошибки CustomPresenter при переходе с 4.4 на 5.7 в MVVMCross - PullRequest
0 голосов
/ 20 сентября 2019

Здравствуйте, stackoverflowers, я работаю над проектом, который построен с использованием MVVMCross и Xamarin для iOS и Android.Я обнаружил, что в проекте используется довольно старая версия MVVMCross (4.4.0), и я пытаюсь привести ее к текущей (6.4).Я подумал, что это хорошая идея - сначала обновить до 5.7, а на более позднем этапе, когда я переключу навигацию на новую форму и т. Д., Я поднимусь до 6 ++.Я успешно запустил версию Android до 5.7, однако, версия iOS использует customPresenter, который я не совсем знаю, как преобразовать в новый Presenter, представленный в 5.1.Я думаю, что мой пользовательский докладчик основан на https://github.com/MvvmCross/MvvmCross-Samples/tree/master/XPlatformMenus/XPlatformMenusTabs.iOS, который некоторое время не обновлялся.

В моем MvxTabPresenter, который является подклассом MvxIosViewPresenter, функция show больше не может быть переопределена.Кроме того, IMvxModalIosView, похоже, больше не существует.

public override void Show(IMvxIosView view)
        {
            if (view is IMvxModalIosView)
            {
                if (this._currentModalViewController != null)
                {
                    return;
                }

                var currentModalViewController = view as MvxViewController;
                this._currentModalViewController = currentModalViewController;
                currentModalViewController.ModalPresentationStyle = UIModalPresentationStyle.Popover;
                CurrentTopViewController.AddChildViewController(currentModalViewController);
                currentModalViewController.View.Frame = CurrentTopViewController.View.Bounds.Inset(10, 10);
                currentModalViewController.View.Alpha = 0;
                CurrentTopViewController.View.Add(currentModalViewController.View);
                currentModalViewController.DidMoveToParentViewController(CurrentTopViewController);

                UIView.Animate(0.25, () =>
                {
                    currentModalViewController.View.Alpha = 1;
                });


                //this.PresentModalViewController(currentModalViewController, true);
                return;
            }

            if (view is HomeView)
            {
                if (this.CurrentTopViewController is MvxTabBarViewController)
                {
                    TabBarPresenter.SelectedIndex = 0;
                    return;
                } 


 public override void CloseModalViewController()
        {
            if (this._currentModalViewController != null)
            {
                this._currentModalViewController.DismissModalViewController(true);
                _currentModalViewController.WillMoveToParentViewController(null);
                _currentModalViewController.View.RemoveFromSuperview();
                _currentModalViewController.RemoveFromParentViewController();
                this._currentModalViewController = null;
                return;
            }

            base.CloseModalViewController();
        }

            }

Кроме того, это больше не может быть переопределено суперклассом.

Есть предложения о том, как к этому подойти?

С уважением, V

...