2015-05-11 4 views
-3

Например, я хочу, чтобы экран входа в ViewController1 отображался, если приложение запускается в первый раз. Если приложение не запускается в первый раз или пользователь уже выполнил вход в систему, он только начинается с ViewController2. Как это реализовать?Как отобразить отдельный экран входа в систему для первого использования

+0

Просто используйте один контроллер с двумя разными видами, один для первого обеда, другой для входа в систему. –

+0

Вы также можете использовать два контроллера представления и реализовать логику в делетете приложения, чтобы запустить с правильным (скорее всего, первая запущенная «пара ключ-значение в NSUserDefaults»). Наличие одного контроллера просмотра для загрузки как входа в систему, так и основного представления нарушает принцип единой ответственности. –

ответ

2

Попробуйте эту ссылку: Check for first launch of my application

Лучший код этой ссылки было сделано Омар, по-моему. Но есть несколько отличных ответов, а также один ответ с хорошей философией по этому вопросу. Если вы хотите небольшое объяснение того, как запустить код и понять его самостоятельно, NSGod имеет хороший фрагмент кода для вас.

Если это не поможет, попробуйте эту ссылку: How to setup first time launch of an iOS App

ТАКЖЕ, Вот код, я взбитыми для вас. , ,

- (BOOL)isFirstTimeLaunching { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if([defaults integerForKey:@"hasRun"] == 0) { 

     // Do some first-launch code... 

     [defaults setInteger:1 forKey:@"hasRun"]; 
     [defaults synchronize]; 
     return YES; 
    } 
    return NO; 
} 

Помните, что возвращение 0 вернулось. Возврат ничего, кроме 0, возвращает false. Когда приложение еще не запущено, ключ @ hasRun будет ложным и вернет 0. Как только он будет запущен, сбросьте его обратно на 0, чтобы предотвратить повторный запуск кода первого запуска.

+0

Большое вам спасибо, но как установить начальное представление для загрузки в AppDelegate.m в соответствии с возвращаемым значением этого метода FirstTimeLaunching? – James

+0

Попробуйте следующее: http://stackoverflow.com/questions/10428629/programatically-set-the-initial-view-controller-using-storyboards –

+0

Большое спасибо. Я не знаю, почему так много людей отказались от моего вопроса. Я действительно новичок в iOS dev. – James

1

Я бы использовал NSUserDefaults. В AppDelegate.m сделать что-то вроде:

if(![[NSUserDefaults standardDefaults] objectForKey:@"shouldLaunchSignUp"]){ 

    //launch your sign up view controller here 

    //set the user default to yes 

    [[NSUserDefaults standardDefaults] setBool:YES forKey:@"shouldLanuchSignUp"]; 

} 
+0

Просто используйте 'setBool:' по умолчанию, не нужно вручную создавать NSNumber. –

+0

Ах, да, вы правы. У меня был образ мышления NSNumber из-за общения с Парсом в последнее время. Я отредактирую ответ. –

1

check in viewDidLoad и установить булевский флаг.

- (BOOL)isFirstTimeLaunching { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if([defaults integerForKey:@"hasRun"] == 0) { 

     // Do some first-launch code... 

     [defaults setInteger:1 forKey:@"hasRun"]; 
     [defaults synchronize]; 
     return YES; 
    } 


    return NO; 
} 

И в видеDidAppear, на основе флага, представлен ваш логин в поле зрения.

Помните, что в viewDidLoad вы не можете представить другой вид.

Смежные вопросы