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。