在FinishedLaunching之前基于响应加载viewController

时间:2014-08-06 11:22:22

标签: c# ios login xamarin appdelegate

On FinishedLauching我调用getRequest来从服务器获取身份验证值。 基于响应数据分别要加载视图控制器。

   public override bool FinishedLaunching (UIApplication app, NSDictionary options){
        window = new UIWindow (UIScreen.MainScreen.Bounds);
        navigationController = new UINavigationController();
        navigationController.SetNavigationBarHidden (true, true);
        loginViewController = new LoginViewController ();
        detailViewController = new DetailViewController ();


    this.AuthenticationRequest();

    boolenTokenData = NSUserDefaults.StandardUserDefaults.BoolForKey ("Authentication");
    navigationController.AddChildViewController (loginViewController);

    if (boolenTokenData == true){
        navigationController.AddChildViewController (detailViewController);
    }

    window.RootViewController = navigationController;
    window.MakeKeyAndVisible ();

    return true;
}

//服务呼叫请求AuthenticationReqest。

  NSUserDefaults prefs = NSUserDefaults.StandardUserDefaults;

public void  AuthenticationRequest(){
    ClientObj.ResponseCompleted += _ResponseData;
    ClientObj.ResponseError += _ErrorData;
    string url = "http://192.12.123.123/Authentication/tokenData.json;
        Obj.GET_Request(url);
}


void _ResponseData(object sender, CommonCode.ResponseEventArgs e){
    this.InvokeOnMainThread (delegate {
        Console.WriteLine ("Response Data ::{ 0}", e.ResponseData.ToString ());

        if(e.ResponseData.ToString ().Length > 0 ){
        prefs.SetBool (true,"Authentication");
        prefs.Synchronize ();

    });
}

void _ErrorData(object sender, CommonCode.ResponseEventArgs e){
    this.InvokeOnMainThread (delegate { 
        Console.WriteLine ("Response Error:{ 0}",e.Error.Message.ToString ());
            prefs.SetBool (false,"Authentication");
            prefs.Synchronize ();
    });
}

在上面的例子中,它在响应或错误调用之前加载视图控制器。 应用程序需要等到调用responseData或ErrorData。

0 个答案:

没有答案