У меня есть эта потребность в нескольких приложениях, и я использую следующий шаблон:
В контроллере для первого представления, которое представлено пользователю, у меня есть следующий тест, где UserPrefsManager - это одиночный объект, который знает учетные данные пользователя. Этот вызов вызывает появление модального представления (FirstTimeWelcomeViewController
), которое сообщает человеку, что ему необходимо зарегистрироваться.
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UserPrefsManager * prefs = [UserPrefsManager sharedInstance];
if (![prefs isLoggedIn])
{
FirstTimeWelcomeViewController * vc = [[[FirstTimeWelcomeViewController alloc] initWithNibName:@"FirstTimeWelcomeViewController" bundle:nil] autorelease];
[self presentModalViewController:vc animated: false];
}
else
{
if (![[RWXLocationSingleton sharedInstance] hasLocation]) {
[[RWXLocationSingleton sharedInstance] findLocationWithAccuracy:kCLLocationAccuracyThreeKilometers withObject:self andSelector:@selector(updateLocationsView)];
}
[[self tableView ]reloadData];
}
}
FirstTimeWelcomeViewController - это, по сути, экран с кнопками, который приветствует людей и предоставляет им различные способы входа в систему:
-(IBAction) createAccount
{
UIViewController * parent = [self parentViewController];
CreateAccountViewController * vc = [[[CreateAccountViewController alloc] initWithNibName:@"CreateAccountViewController" bundle:nil] autorelease];
[self dismissModalViewControllerAnimated:false];
[parent presentModalViewController:vc animated: false];
}
представьте, что они также существуют для ForgotPassword и loginACcount ... того же шаблона. Это приводит к замене текущего представления на представление, обрабатывающее конкретный случай, для которого они нажали кнопку.
взяв метод loginAccount, вы открыли LoginAccountViewController, и у него есть метод loginButton, который работает примерно так ...
-(IBAction) loginButton
{
NSString * u = [self.username text];
NSString * p = [self.password text];
//
// app specific logic that tests various inputs and creates a user object.
//
// goes here...
//
if([user checkValid])
{
UserPrefsManager * prefs = [UserPrefsManager sharedInstance];
[prefs setPassword:p];
[prefs setUsername:u];
[self dismissModalViewControllerAnimated:FALSE];
}
//
// more app specific stuff
//
}
И это в значительной степени так. Вы должны использовать один из стандартных способов размещения материала в цепочке для ключей или пользовательские настройки по умолчанию для сохранения вашей информации. убедитесь, что выбранное вами время сохраняется между восстановлениями, если это раздражает пользователя для воссоздания. Первая часть является наиболее полезной, хотя остальные могут быть полезны для контекста.