Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个viewcontroller XAMARIN.IOS之间的转换_C#_Xamarin_Xamarin.ios - Fatal编程技术网

C# 两个viewcontroller XAMARIN.IOS之间的转换

C# 两个viewcontroller XAMARIN.IOS之间的转换,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我试图在xamarin.ios上的两个视图控制器之间创建一个事务(我没有使用导航控制器,而是使用viewcontroller),我希望当滑动动作进行时,它会出现在移动另一侧viewcontroller(目标viewcontroller)的视图控制器下,我试图模拟经典的“返回”ios的手势同时出现在系统本身和whatsapp上。我已经发布了,并且已经部分解决了,管理滚动动画,但是对于第二个视图控制器,没有什么要做的:( 我的代码 private void InteractiveTransitio

我试图在xamarin.ios上的两个视图控制器之间创建一个事务(我没有使用导航控制器,而是使用viewcontroller),我希望当滑动动作进行时,它会出现在移动另一侧viewcontroller(目标viewcontroller)的视图控制器下,我试图模拟经典的“返回”ios的手势同时出现在系统本身和whatsapp上。我已经发布了,并且已经部分解决了,管理滚动动画,但是对于第二个视图控制器,没有什么要做的:(

我的代码

private void InteractiveTransitionRecognizerActionWithoutIndex(UIScreenEdgePanGestureRecognizer sender, UIView View, string x)
                {
                    
                    //Contiene un valore numerico che varia in base allo stato della gesture
                    var percento = sender.TranslationInView(View).X * 100 / sender.View.Bounds.Size.Width;
                    var storyboard = UIStoryboard.FromName("Main", null);
                   // var viewController = storyboard.InstantiateViewController(x);
            
                    

                    //Quando la gesture rileva una variazione
                    if (sender.State == UIGestureRecognizerState.Changed)
                    {
                        var minTransform = CGAffineTransform.MakeTranslation(sender.TranslationInView(View).X, 0); //*2 = piu rapido
                        var maxTransform = CGAffineTransform.MakeTranslation(sender.TranslationInView(View).X, 0);

                        View.Transform = true ? minTransform : maxTransform;


                        UIView.Animate(0.1, 0, UIViewAnimationOptions.CurveEaseInOut,
                            () =>
                            {
                                View.Transform = true ? maxTransform : minTransform;

                                //???
                                
                                
                            },
                            null
                        );

如果您使用的是故事板,并且熟悉segue。要定义自定义过渡动画,您必须按照以下方式配置segue:

然后,在第一个视图控制器中,您可以覆盖
prepareforsgue
方法:

public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
    base.PrepareForSegue(segue, sender);

    var destinationVC = segue.DestinationViewController as SecondViewController;
    destinationVC.Callee = this;
    destinationVC.TransitioningDelegate = new CustomTransitioningDelegate(sender as UIView);
    destinationVC.ModalPresentationStyle = UIModalPresentationStyle.Custom;
}
动画是在继承自UIViewControllerAnimatedTransitioning的类中定义的

public class GrowTransitionAnimator : UIViewControllerAnimatedTransitioning
{
    readonly UIView _animationOrigin;

    public GrowTransitionAnimator(UIView animationOrigin)
    {
        _animationOrigin = animationOrigin;
    }

    public override async void AnimateTransition(IUIViewControllerContextTransitioning transitionContext)
    {
        // The animation here
    }

    public override double TransitionDuration(IUIViewControllerContextTransitioning transitionContext)
    {
        return 0.3;
    }
}

我的情况如下,从一个选项卡栏控制器开始,在界面中导航,在下一个视图控制器中导航,我引用每个视图控制器的一个新实例

 public void ApriStoryBoard(string x)
    {
        var storyboard = UIStoryboard.FromName("Main", null);
        var viewController = storyboard.InstantiateViewController(x); // Your view controller here
        UIApplication.SharedApplication.KeyWindow.RootViewController = viewController;
    }
您设置为“我”的参数不会在main.storyboard文件中显示您使用的viewcontroller类型是什么?

我的故事板中没有“segue”面板。您使用的控制器类型是什么?您可以共享您的示例,以便我可以直接在我的一侧进行测试。
 public void ApriStoryBoard(string x)
    {
        var storyboard = UIStoryboard.FromName("Main", null);
        var viewController = storyboard.InstantiateViewController(x); // Your view controller here
        UIApplication.SharedApplication.KeyWindow.RootViewController = viewController;
    }