C# 如何将值传递给上一个ViewContoller

C# 如何将值传递给上一个ViewContoller,c#,ios,xamarin,viewcontroller,C#,Ios,Xamarin,Viewcontroller,我正在使用Xamarin.iOSC# 出于某种原因,我不使用segue。我有3个UIViewContoller。第一个UIViewController按下第二个UIViewController,第二个控制器打开第三个UIViewController。当我选择一行时,我将返回到第一个控制器。但此时,在第三个控制器中,我想更改第一个UIViewController的变量 逻辑上是这样的 控制器-->2。控制器-->3。控制器->选择一行并访问第一个控制器变量,然后将其赋值-->2。控制器-->1。控

我正在使用
Xamarin.iOS
C#

出于某种原因,我不使用segue。我有3个
UIViewContoller
。第一个
UIViewController
按下第二个
UIViewController
,第二个控制器打开第三个
UIViewController
。当我选择一行时,我将返回到第一个控制器。但此时,在第三个控制器中,我想更改第一个
UIViewController
的变量

逻辑上是这样的

  • 控制器-->2。控制器-->3。控制器->
    选择一行并访问第一个控制器变量,然后
    将其赋值-->2。控制器-->1。控制器
    并查看此变量是否更改 所以这个变量是空的,不能更改
  • 这是我的密码

    这是第一个控制器

    public int myVariable = 0;
    
    -----
    var controller2 =(SecondController)this.Storyboard.InstantiateViewController("SecondControllerStoryboard");
    var mynextController = new SecondController(controller2.Handle);
    NavigationController.PushViewController(mynextController, true);
    
    public int myVariable2=0;
    
    var controller = (DocumentUpload)this.Storyboard.InstantiateViewController("FirstControllerStoryboard");
    controller.myVariable= selectedIndex;
    
    // It goes back the previous (second) controller
    NavigationController.PopViewControllerAnimated(true);
    
    这是第二个控制器

    public int myVariable = 0;
    
    -----
    var controller2 =(SecondController)this.Storyboard.InstantiateViewController("SecondControllerStoryboard");
    var mynextController = new SecondController(controller2.Handle);
    NavigationController.PushViewController(mynextController, true);
    
    public int myVariable2=0;
    
    var controller = (DocumentUpload)this.Storyboard.InstantiateViewController("FirstControllerStoryboard");
    controller.myVariable= selectedIndex;
    
    // It goes back the previous (second) controller
    NavigationController.PopViewControllerAnimated(true);
    
    //这里我用的是segue

    //它返回到上一个(第一个控制器)

    这是第三个控制器

    public int myVariable = 0;
    
    -----
    var controller2 =(SecondController)this.Storyboard.InstantiateViewController("SecondControllerStoryboard");
    var mynextController = new SecondController(controller2.Handle);
    NavigationController.PushViewController(mynextController, true);
    
    public int myVariable2=0;
    
    var controller = (DocumentUpload)this.Storyboard.InstantiateViewController("FirstControllerStoryboard");
    controller.myVariable= selectedIndex;
    
    // It goes back the previous (second) controller
    NavigationController.PopViewControllerAnimated(true);
    
    所以当first的控制器viewdiapper时,myVariable仍然为null

    所以,在第三个控制器中,它可能会创建一个新实例,然后我无法更改变量

    我正在寻找类似的桌面应用程序

    if (Application.OpenForms[i].Name)
    

    …你需要做的是

    ((Controller)NavigationController.ViewControllers[0]).myVariable = 3;
    

    这是可行的,因为导航控制器保留当前堆叠的所有控制器的数组。您可以使用此选项访问“位于”当前打开视图后面的视图的控制器。

    您需要做的是

    ((Controller)NavigationController.ViewControllers[0]).myVariable = 3;
    

    这是可行的,因为导航控制器保留当前堆叠的所有控制器的数组。您可以使用它来访问“当前打开视图后面的视图”的控制器。

    < P>而接受的答案将起作用,请考虑这一点的实用性。如果您需要跨多个视图控制器持久化数据,那么实际上应该将其抽象到单独的数据存储中

    >P>虽然所接受的答案是可行的,但要考虑这一点的实用性。如果您需要跨多个视图控制器持久化数据,那么实际上应该将其抽象到单独的数据存储中

    谢谢你我一直在寻找:)谢谢你我一直在寻找:)