1

我正在研究 Monotouch/Xamarin 示例,并尝试将故事板 segue 和 Windows Azure 移动服务 (WAMS) 身份验证拼接在一起。我每个人都独立工作,但我似乎无法在有效的 WAMS 登录后触发 segue。DoLogin() 函数中不会引发错误,并且 AlertView 可以正常工作。它似乎只是跳过了 PerformSegue。ViewDidLoad() 中的 PerformSegue 工作正常。

public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();    

        btn_Facebook.TouchUpInside += (sender, e) => {
            Console.WriteLine("Facebook clicked");
            DoLogin(MobileServiceAuthenticationProvider.Facebook);
        };

        btn_Twitter.TouchUpInside += (sender, e) =>
        {
            Console.WriteLine("Twitter clicked");
            this.PerformSegue("seg_Login", this);
            // DoLogin(MobileServiceAuthenticationProvider.Twitter);
        };
}

private void DoLogin(MobileServiceAuthenticationProvider provider)
    {
        string applicationKey = "[removed]";
        string applicationUrl = "https://[removed].azure-mobile.net/";

        MobileServiceClient client = new MobileServiceClient(applicationUrl, applicationKey);

        var task = client.LoginAsync(this, provider).ContinueWith(t =>
        {
           MobileServiceUser user = t.Result;

           this.BeginInvokeOnMainThread(() =>
           {
               this.PerformSegue("seg_Login", this);

               UIAlertView alert = new UIAlertView("Logged In!", string.Format("Hello user {0}", user.UserId), null, "OK");
               alert.Show();
           });
        });
    }
4

2 回答 2

1

这也让 Xamarin 的支持工程师感到困惑,并且它已作为错误提交。然而,我发现了一个非常简单的补充来让它工作。通过添加计时器并创建半秒延迟,我终于能够触发 segue。

this.BeginInvokeOnMainThread(() =>
            {
                Timer tm = new Timer(new TimerCallback((state) =>
                {
                    this.InvokeOnMainThread(new NSAction(() =>
                    {
                        this.PerformSegue("seg_Login", this);
                    }));
                }), null, 500, Timeout.Infinite);
            });
于 2013-10-05T21:25:33.327 回答
0

当前的实现类是否实现了 prepareforseque 或者您是否将其全部推送到情节提要。我建议实施 prepareforseque 并在其中设置一个断点,看看它是否能走得那么远。

于 2013-10-03T15:12:25.673 回答