0

Я использую SWRevealViewController для создания скользящего меню. Перед доступом к меню отображается окно входа в систему, позволяющее войти в систему. Теперь я хочу, чтобы пользователь отключился и снова отобразил окно входа в систему. Мой вопрос заключается в том, как всплывать SWRevealViewController.Pop SWRevealViewController

код, который обеспечивает доступ к приложению после входа является:

MainViewController *vMainMenu = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    vMainMenu.strURL = URL; 
    LeftMenu *vLeftMenu = [[LeftMenu alloc] initWithNibName:@"LeftMenu" bundle:nil]; 

    UINavigationController *principalNavController = [[UINavigationController alloc] initWithRootViewController:vMainMenu]; 
    UINavigationController *rearNavController = [[UINavigationController alloc] initWithRootViewController:vLeftMenu]; 

    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavController frontViewController:principalNavController]; 

    mainRevealController.delegate = self; 

    self.viewController = mainRevealController; 

    principalNavController.navigationBar.hidden = YES; 
    rearNavController.navigationBar.hidden = YES; 

    self.window.rootViewController = self.viewController; 

Это решение не работает:

[self.revealViewController.navigationController popViewControllerAnimated:YES]; 
Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil]; 
[self.navigationController pushViewController:vSplash animated:YES]; 

Можете ли вы помочь мне, пожалуйста

Спасибо.

+0

Решена ли ваша проблема? – ichanduu

+0

Да, да. Но это не лучшее решение, я отключил panGestureRecognizer и tapGestureRecognizer, а затем я нажал на splashScreen: [self.revealViewController.navigationController popViewControllerAnimated: YES]; [обнаружениеКонтроллер panGestureRecognizer] .enabled = НЕТ; [раскрыть ControlTalker tapGestureRecognizer] .enabled = NO; –

+0

Я попытался выскочить, и все, что он показывает, это пустой экран. Я все равно попробую ур решения. Спасибо. – ichanduu

ответ

0

Вы не можете вернуться к своему LoginViewController по почте. Вы можете добавить PresentViewController без анимации, чтобы сделать это.

Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil]; 
[self presentViewController: vSplash animated:NO completion:nil]; 
0

У меня была та же проблема. Я реализовал несколько раскадровки.

 let storyboard = UIStoryboard(name: "Login", bundle: nil) 
     let startcontroller = storyboard.instantiateViewControllerWithIdentifier("LoginVC") as UIViewController 
     window?.rootViewController = startcontroller 

С помощью этого фрагмента вы можете получить доступ к праву View Controller.

0

Вы можете использовать «Разматыватель Segue». Развертка segue похожа на регулярный переход, который возвращается, а не вперед.

Во-первых, перейти к Вход View Controller и добавьте следующий метод:

-(IBAction)unwindToLoginScreen:(UIStoryboardSegue *)segue { 
} 

Способ может быть пустым, и он может иметь любое имя; полезно использовать описательные имена, потому что у вас может быть много разрывов в вашем коде, и будет полезно различать их.

Этот метод размотки будет действовать как глобальная константа, которая будет видна всем контроллерам View на раскадровке.

Теперь на каждом контроллере представления, который должен иметь возможность вернуться на экран входа в систему, вы создаете разворот Segue. Вы можете сделать это на раскадровке:

  1. Выберите контроллер просмотра, который вы хотите; на верхней панели вы должны увидеть три кнопки, один из которых представляет контроллер просмотра, другой - первый ответчик, а другой - вывод.
  2. Ctrl + перетащить с кнопки View Controller на кнопку Exit. Появится контекстное меню и перечислит все видимые методы размотки, созданные на вашем раскадровке.
  3. На схеме документа для контроллера вида появится «Unwind segue». Вы можете добавить идентификатор к этому сегменту (например, «Вход» в вашем случае). Затем вы вызываете performSegueWithIdentifier. Выберите тот, который вы создали на контроллере входа в систему.

Выполнение этого, полный стек между контроллером представления и контроллером входа в систему будет разворачиваться. То есть будут отображаться все контроллеры представлений, уложенные над контроллером входа в систему.

Вы также можете использовать prepareForSegue для размотки segues так же, как вы использовали бы их для регулярных segues. И вы можете добавить код к методу - (IBAction), если вы хотите что-то сделать в результате для segue.

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