Pop SWRevealViewController

Я использую SWRevealViewController для создания скользящего меню. Перед доступом к меню отображается вид входа в систему, чтобы разрешить пользователю вход в систему. Теперь я хочу позволить пользователю отключиться и снова отобразить вид входа в систему. Мой вопрос заключается в том, как получить 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];

Не могли бы вы мне помочь

Спасибо.

3 ответа

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

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

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

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

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

Вы можете использовать "Разматывать Segue". Разматывающий переход похож на обычный переход, который идет назад, а не вперед.

Сначала перейдите к контроллеру представления входа и добавьте следующий метод:

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

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

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

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

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

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

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

Другие вопросы по тегам