Как я хотел бы сделать это, что-то вроде этого:
- Установите заставку как RootViewController, сделайте свою логику в фоновом режиме, и начать, чтобы проверить, если пользователь вошел в систему или нет.
- Затем, после завершения вызова async, перейдите к пользователю либо во входном экране, либо установите его как новый контроллер rootview в диспетчере навигации. Если пользователь не выполнил вход в систему, нажмите верхний контроллер на вершине loggedinscreen - не забудьте проверить, вошел ли пользователь в систему или нет, прежде чем вы начнете загружать определенные пользователем данные на экране входа.
Пример:
MySplashController splash;
Navigationcontroller nav;
UIViewController masterviewcontroller;
Public override void FinishedLaunching(UIApplication app, NSDictionary options){
splash = new MySplashController();
window.rootviewcontroller = splash;
window.makekeyandvisible();
}
void MyAsyncLoggedInCall(bool loggedin){
if(loggedin)
LoggedIn();
else
LogOn();
}
void LoggedIn(){
masterviewcontroller = MyLoggedInScreen();
nav = new navigationcontroller(masterviewcontroller);
window.rootviewcontroller = nav;
}
void LogOn(){
masterviewcontroller = MyLoggedInScreen();
nav = new navigationcontroller(masterviewcontroller);
window.rootviewcontroller = nav;
nav.TopViewController.PresentModalViewController(new MyLogInScreen(),false);
}
Это лишь один из способов сделать это. Вы также можете посмотреть, как реализовать функции входа в facebook, и сделать что-то подобное в своем приложении, так как оно очень похоже на вашу проблему. Monotouch bindings
См. Ответ http://stackoverflow.com/questions/14621022/splash-screen-with-heavy-codes-in-monotouch/14671023#14671023 и пример https://bitbucket.org/MaximKorobov/monotouch-splashtest –