IOS: код для модального представления экрана входа в систему

Я хочу защитить приложение паролем с помощью экрана входа в систему (и экрана присоединения для первого использования). Некоторые ответы на SO предлагают проверить, вошел ли пользователь в систему viewdidappear начального экрана и, если он не вошел в систему, модально представить экран входа в систему.

Я пробовал это, но код не работает. Кто-нибудь знает актуальный код для представления контроллера модального представления? Примечание. Я создал экран входа в систему в раскадровке и дал ему идентификатор раскадровки «логин».

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    //if not logged in, modally present login screen here.

    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]) {
        // go to login screen
        NSLog(@"not logged in");//this fires so logic is ok
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];//this line gives warning it is not being used
    } else {
        // go to main screen
    }
} 
/*perhaps I should call this somewhere?

- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
*/

person user1904273    schedule 17.05.2015    source источник
comment
Вам нужно позвонить presentViewController:animated:completion: (presentModalViewController:animated: обесценивается). Код, который вы показываете, ничего не представляет. Вам следует прочитать Руководство по программированию View Controller для iOS.   -  person rdelmar    schedule 17.05.2015
comment
Вы не запускаете какое-либо событие, ivc не используется, 'rdelmar' правильный.   -  person Bista    schedule 17.05.2015


Ответы (1)


Отдайте должное комментарию @rdelmar. Вы должны presentViewController:animated:completion: (presentModalViewController:animated: сделать это ivc.

- (void)viewDidAppear:(BOOL)animated
{
   [super viewDidAppear:animated];
   //if not logged in, modally present login screen here.

   if(![[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]) {
       // go to login screen
       NSLog(@"not logged in");//this fires so logic is ok
       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
       UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];//LOOK AT NEXT LINE
       [self presentViewController:ivc animated:YES completion:nil]; //THIS LINE IS MISSING.
  } else {
    // go to main screen
  }
}
person Ali Riahipour    schedule 17.05.2015