Стандартный способ следующий:
- Упакуйте все, что связано с экраном входа в систему, в подкласс
UIViewController
, который управляет этим. Представьте это представлениеМодально в приложении делегат в application:didFinishLaunchingWithOptions:
, вызывая
LoginController*loginController= ... ; // create the view controller for the login screen
[self.tabController presentModalViewController:loginController animated:YES];
Таким образом, анимация между переходом и т. д. автоматически обрабатывается.
Позже вы можете отклонить его после успешного входа в систему. Это можно сделать из LoginController
с помощью
[self.parentViewController dismissModalViewControllerAnimated:YES];
Однако мне часто приходится выполнять дополнительную настройку после входа в систему.сделано.Итак, я сначала сказал бы делегату приложения, что вход выполнен, а затем выполнил
[self.tabController dismissModalViewControllerAnimated:YES];
от делегата приложения.Тогда я могу выполнять дополнительные задачи там.
Чтобы связаться с делегатом приложения, я бы использовал NSNotification
, но это может быть немного сложным для вас.
Один из способов, который может быть проще для понимания (но на мой взгляд, более уродливым), - определить метод, скажем, loginDone
в делегате приложения.Затем внутри LoginViewController
вы можете сделать
MyAppDelegate*appDelegate=[[UIApplication sharedApplication] delegate];
[appDelegate loginDone];