MvvmCross - Как добавить пользовательский модальный переход - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю над проектом с использованием MvvmCross и Xamarin. Я пытаюсь добавить пользовательский переход при представлении и отклонении моего модального представления. В настоящее время я представляю это так:

[MvxModalPresentation(WrapInNavigationController = true, ModalPresentationStyle = UIModalPresentationStyle.Custom)]
public partial class MyView : MvxViewController
{

и отклонить это так:

NavigationController.DismissModalViewController(true);

Итак, моя анимация готова, но я предполагаю, что мне нужно установить делегат перехода на тот, который я создал. Как мне это сделать?

Я довольно новичок в MvvmCross, поэтому любые советы и рекомендации очень ценятся. Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Я не уверен, чего вы на самом деле хотите достичь здесь.

Если вам нужна помощь по синтаксису. Это должно быть что-то вроде этого.

this.NavigationController.TransitioningDelegate = new MyOwnDelegate();


  internal class MyOwnDelegate : IUIViewControllerTransitioningDelegate
    {
        public IntPtr Handle => throw new NotImplementedException();

        public void Dispose()
        {
            //throw new NotImplementedException();
        }
    }

Но обычно люди используют этот. Я также даю некоторый синтаксис, если это помогает

this.NavigationController.Delegate = new NavigationControllerDelegate();



 public class NavigationControllerDelegate : UINavigationControllerDelegate
{
    public NavigationControllerDelegate(IntPtr handle) : base(handle)
    {
    }
    public NavigationControllerDelegate()
    {
    }
    public override IUIViewControllerAnimatedTransitioning GetAnimationControllerForOperation(UINavigationController navigationController, UINavigationControllerOperation operation, UIViewController fromViewController, UIViewController toViewController)
    {
        var fromVcConformA = fromViewController as ICustomTransition;
        var fromVCConFromB = fromViewController as IWaterFallViewControllerProtocol;
        var fromVCCConformc = fromViewController as IHorizontalPageViewControllerProtocol;

        var toVcConformA = toViewController as ICustomTransition;
        var toVCConfromB = toViewController as IWaterFallViewControllerProtocol;
        var toVCCConformc = toViewController as IHorizontalPageViewControllerProtocol;

        if ((fromVcConformA != null) && (toVcConformA != null) && ((fromVCConFromB != null && toVCCConformc != null) || (fromVCCConformc != null && toVCConfromB != null)))
        {
            var transition = new CustomTransition();
            transition.presenting = operation == UINavigationControllerOperation.Pop;
            return transition;
        }
        else
        {
            return null;
        }
    }

}
...