2016-10-13 5 views
-1

Команда,Как перейти с одной раскадровки на другую раскадровку

У меня есть две раскадровки. Один для аутентификации И еще один для моей панели приложений.

Для проверки подлинности Раскадровка Экран инициализации - это loginScreen. После успешного входа в систему я загружаю раскадровку приборной панели. Для раскадровки приборной панели начальный экран - MainViewController.

Здесь я реализован выход из DashboardStoryboard. Итак, теперь я хочу переключиться на свою раскадровку.

Здесь он возвращается к loginScreen. Но я считаю, что это не правильный способ реализации. Это будет более полезно, если я смогу сделать лучше?

-(void)logout{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Authentication" bundle: nil]; 
    LoginViewScreenController *oginViewScreenController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewScreenController"]; 
    [self.navigationController pushViewController: loginViewScreenController animated:NO]; 
} 

Ваш отзыв высоко оценен.

+0

Почему вы используете две раскадровки, а не только отдельные контроллеры представлений? – Andriko13

+0

@ Andriko13 Я использую две раскадровки. – kiran

+1

вы должны изучить ссылки на раскадровку https://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226 –

ответ

2

Очень легко использовать segue и Storyboard Reference. Пожалуйста, выполните шаги и скриншоты.

Шаг-1)

  • Перетащите Storyboard Reference из библиотеки объектов в первой (основной) раскадровке.

Шаг-2)

  • Добавить SEGUE из исходного ViewController в Storyboard reference.

Шаг-3)

  • Выберите другую (вторую) раскадровку.

  • Reference ID: StoryboardID вашего destinationViewControler (второй View Controller), который доступен в Second.Storyboard


-(void)logout 
{ 
    UIViewController *aVCObj = [[UIApplication sharedApplication]delegate].window.rootViewController; 
    if ([aVCObj isKindOfClass:[UINavigationController class]]) { 
     UINavigationController *aNavController = (UINavigationController *)aVCObj; 
     [aNavController popToRootViewControllerAnimated:YES]; 
    } 
} 
2

Вот Хитрость сделайте это, установив u p a ключ true с использованием NsuserDefaults, когда пользователь вошел в систему иначе false и перемещайтесь по вашему приложению при запуске соответственно с использованием метода presentViewController без анимации, чтобы пользователь не получил возможность вернуться к предыдущему vc.

Посмотрите ниже код, иллюстрирующий выше предложения:

if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"isloggedIn"] isEqualToString:@"true"]) { 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"loginView"]; 
    [self presentViewController:vc animated:NO completion:nil]; 

}else{  // when logout 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"logoutView"]; 
    [self presentViewController:vc animated:NO completion:nil]; 
} 

Если вам необходимо применить некоторые эффекты, когда VC появляются только объявление эти две линии до presentViewController метода см:

[vc setModalPresentationStyle:UIModalPresentationCustom]; 
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 

Примечание: установить ключ false при выходе пользователя из системы.

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