C# Xamarin iOS以编程方式展开Segue或解除SissisViewController并传回数据

C# Xamarin iOS以编程方式展开Segue或解除SissisViewController并传回数据,c#,ios,xamarin,storyboard,segue,C#,Ios,Xamarin,Storyboard,Segue,我已经在我的故事板中创建了一个片段。这是一个模态segue,我给它一个LoginSegue标识符 在我的控制器中,我执行以下操作: PerformSegue("LoginSegue", this); 一切都很好。新控制器如预期的那样出现 要返回到调用视图,我可以通过将按钮连接到调用控制器中的展开序列来使用展开序列。这个很好用 或者我可以(通过代码)调用: 问题是我想传回一些数据 ParentViewController为空 在返回调用视图之前,我确实需要进行一些验证,因此从按钮执行自动展开不是

我已经在我的故事板中创建了一个片段。这是一个模态segue,我给它一个LoginSegue标识符

在我的控制器中,我执行以下操作:

PerformSegue("LoginSegue", this);
一切都很好。新控制器如预期的那样出现

要返回到调用视图,我可以通过将按钮连接到调用控制器中的展开序列来使用展开序列。这个很好用

或者我可以(通过代码)调用:

问题是我想传回一些数据

ParentViewController
为空

在返回调用视图之前,我确实需要进行一些验证,因此从按钮执行自动展开不是一个选项

   [Action("UnwindToCaller:")]
   public void UnwindToCaller(UIStoryboardSegue seque)
   {
       var loginViewController = (LoginViewController)seque.SourceViewController;
       var data = loginViewController.getData();
       Console.WriteLine("Unwind to Caller Here.");
   }
我似乎也找不到一种方法来给放松的segue一个故事板Id

如果我可以从代码中执行展开序列,一切都会很好,或者如果我可以用DismissViewController传递一些数据,那也会很好


同样,这似乎是一件非常常见的事情。

好的,找到了解决方案。希望这能帮助别人

因此,在我调用的视图控制器中,当我准备Foregue时,我将一个引用传递给调用的视图控制器。然后我有一个从模态视图调用的方法

以下是Xamarin参考资料:

也在调用视图控制器中

   public void LoggedIn (string someFlag)
   {
       Console.WriteLine("Logged in with : " + someFlag);
       DismissViewController(true, null);
   }
public void SetData (CallingViewController callingCtrl)
    {
        calllingViewController = callingCtrl;
    }
和LoginView控制器

   public void LoggedIn (string someFlag)
   {
       Console.WriteLine("Logged in with : " + someFlag);
       DismissViewController(true, null);
   }
public void SetData (CallingViewController callingCtrl)
    {
        calllingViewController = callingCtrl;
    }
然后当我准备回来的时候

callingViewController.LoggedIn("the flag"); 

如果单击窗口左侧场景列表中的序列,则可以使用属性检查器为其指定标识符。您可以使用prepareForSegue将数据通过展开发送回初始控制器,就像您对前向序列所做的那样。忘记提及了。我正在使用VisualStudio。我没有看到“场景列表”。我可以在故事板和文档大纲中看到我所有的推送序列(并给出它们的标识符),只是没有展开序列。“登录序列”是模式序列吗?如果是这种情况,请尝试检查登录控制器上“PresentingViewController”属性的值。