2011-10-07 7 views
2

J'ai besoin de charger et de traiter beaucoup de choses avant que mon application ne démarre, donc quand je la teste sur mon iPhone, elle est toujours détruite par iOS car elle bloque l'iPhone pendant trop longtemps. J'ai ensuite décidé d'écrire une classe d'écran de chargement pour mes applications, quelque chose qui montre immédiatement un logo et un indicateur de progression (le rendant réactif pour éviter d'être tué par iOS), alors que dans un fond un thread séparé initialise tous mes ViewControllers puis ferme l'écran de chargement et affiche la fenêtre principale.Quelle est la meilleure façon de créer une classe d'écran de chargement pour une application Monotouch?

Quelle est la meilleure façon de le faire avec MonoTouch?

Toute suggestion est la bienvenue. Merci.

Répondre

6

Voici comment je le fais:

Dans la méthode FinishedLaunching, initialiser et ajoutez votre vue de démarrage à la fenêtre principale:

window.AddSubview(this.splashView); 

Après cela, appelez votre code qui fait tous les trucs que vous vouloir faire dans un appel de thread/asynchrone. J'utilise habituellement le ThreadPool. N'oubliez pas d'invoquer sur le thread principal:

ThreadPool.QueueUserWorkItem(delegate { 
    this.BeginInvokeOnMainThread(delegate { 
     //Initialize stuff here 
     //... 
     //when done, add your initial view to the window and remove the splash view 
     //eg.: 
     //window.AddSubview(myController.View); 
     //this.splashView.RemoveFromSuperview(); 
    }); 
}); 

// show the window, which only displays the splash view now and return 
window.MakeKeyAndVisible(); 
return true; 

Un exemple approximatif, mais j'espère que cela aide.

Questions connexes