iOS MMDrawerController target-c контроллер представления представления входа - PullRequest
0 голосов
/ 12 февраля 2019

Я начинаю изучать iOS и пытаюсь выполнить левую навигацию с помощью MMDrawerController мой код AppDelegate didFinishLaunchingWithOptions: - (BOOL) приложение: (UIApplication *) приложение

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];


        UIViewController *leftView = [mainStoryboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
        UINavigationController *leftNav = [[UINavigationController alloc]initWithRootViewController:leftView];



            UIViewController *centerView = [mainStoryboard instantiateViewControllerWithIdentifier:@"CenterViewController"];
            UINavigationController *centerNav = [[UINavigationController alloc]initWithRootViewController:centerView ];
            self.drawerController = [[MMDrawerController alloc] initWithCenterViewController:centerNav leftDrawerViewController:leftNav];



        self.drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModePanningCenterView;
        self.drawerController.closeDrawerGestureModeMask = MMCloseDrawerGestureModePanningCenterView;
        self.window.rootViewController = self.drawerController;
        [self.window makeKeyAndVisible];


        // Override point for customization after application launch.
        return YES;
}

Так что все работает нормально, но у меня в приложении LoginViewController, и если у пользователя нет сохраненного токена в NSUserDefaults, я должен показать LogionViewController.Конечно, боковое меню должно быть скрыто на LoginViewController.

Я пытался переключиться на LoginViewController внутри моего CenterViewController:

- (void)viewDidLoad {
    [super viewDidLoad];

    LoginViewController * vc = [[LoginViewController alloc] init];
    AppDelegate *app = [[UIApplication sharedApplication] delegate];
    [app.drawerController setCenterViewController:vc withCloseAnimation:YES completion:nil];



}

Но у меня только черный экран.Что я делаю не так?Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

То, что вы делаете, немного странно, потому что вы устанавливаете новый centerViewController (типа LoginViewController) внутри текущего (типа CenterViewController), и как только это будет сделано, последний из них будетосвобожден, потому что на него больше нет ссылок.Это может как-то вызывать черный экран.

Одним из решений было бы иметь LoginViewController вне MMDrawerController и всегда представлять его в начале.Если токена нет, то быстро (без анимации) присутствует MMDrawerController, а LoginViewController даже не будет виден.Этот способ также позволяет вам легко вернуться обратно на экран входа в систему, если пользователь выходит из системы.

Другой вариант - просто представить ваш LoginViewController из CenterViewController модально (или как вам на самом деле нравится), используя presentViewController:animated:completion:, а затем просто отклонить его при входе в систему.

...