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