Xamarin iOS 以编程方式展开 Segue 或 DismissViewController 并传回数据



我在故事板中创建了一个 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.");
   }

我似乎也找不到一种方法来给展开的 segue 一个故事板 Id。

如果我

能从代码中执行展开 segue,一切都会很好,或者如果我可以使用 DismissViewController 将一些数据传回去,那也会很好。

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

好的,找到了一个解决方案。 希望这对其他人有所帮助。

因此,在我的调用视图控制器

中,当我准备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);
   }

也在调用视图控制器中

   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"); 

相关内容

  • 没有找到相关文章

最新更新