MvvmCross-如何添加自定义模态转换

时间:2018-09-06 03:23:36

标签: c# ios xamarin mvvm mvvmcross

我正在使用MvvmCross和Xamarin进行项目。我尝试在显示和关闭模式视图时添加自定义过渡。目前,我是以这种方式呈现的:

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

并以这种方式消除它:

NavigationController.DismissModalViewController(true);

所以我已经准备好动画,但是我假设我需要将过渡委托设置为我创建的过渡委托。我该怎么做?

我是MvvmCross的新手,因此非常感谢任何提示和技巧。谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定,您实际上想在这里实现什么。

如果您正在寻找语法帮助。应该是这样的。

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;
        }
    }

}