我在故事板中创建了一个segue。这是一个模态segue,我给它一个LoginSegue的标识符。
在我的控制器中,我这样做:
PerformSegue("LoginSegue", this);
一切都很好。新控制器按预期出现。
要返回到调用视图,我可以通过将按钮连接到调用控制器中的展开segue来使用展开segue。这很好。
或者我可以打电话(来自代码):
DismissViewController(true, null);
问题是我想传回一些数据。
ParentViewController
为空。
我需要在返回到调用视图之前进行一些验证,因此不能从按钮进行自动展开。
[Action("UnwindToCaller:")]
public void UnwindToCaller(UIStoryboardSegue seque)
{
var loginViewController = (LoginViewController)seque.SourceViewController;
var data = loginViewController.getData();
Console.WriteLine("Unwind to Caller Here.");
}
我似乎也无法找到一种方法来展开故事板。
如果我可以从代码中执行unwind segue,那么一切都会很好,或者如果我可以使用DismissViewController传回一些数据也会很好。
同样,这似乎是一件很常见的事情。
答案 0 :(得分:0)
好的,找到了解决方案。希望这有助于其他人。
所以在我的调用视图控制器中,当我准备ForSegue时,我传递一个对调用视图控制器的引用。然后我有一个从模态视图调用的方法。
以下是Xamarin参考:http://developer.xamarin.com/recipes/ios/general/storyboard/storyboard_a_tableview/
public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
if (segue.Identifier == "LoginSegue")
{
var destCtrl = segue.DestinationViewController as LoginViewController;
if (destCtrl != null)
{
// pass in a reference to THIS view controller.
destCtrl.SetData(this);
}
}
base.PrepareForSegue(segue, sender);
}
同样在Calling View Controller中
public void LoggedIn (string someFlag)
{
Console.WriteLine("Logged in with : " + someFlag);
DismissViewController(true, null);
}
和LoginViewController
public void SetData (CallingViewController callingCtrl)
{
calllingViewController = callingCtrl;
}
然后当我准备回来时。
callingViewController.LoggedIn("the flag");