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>虽然所接受的答案是可行的,但要考虑这一点的实用性。如果您需要跨多个视图控制器持久化数据,那么实际上应该将其抽象到单独的数据存储中 谢谢你我一直在寻找:)谢谢你我一直在寻找:)