0

我开始学习 iOS 并尝试使用MMDrawerController进行左导航, 我的 AppDelegate didFinishLaunchingWithOptions 代码是:- (BOOL)application:(UIApplication *)application

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];



}

但我只有黑屏。我做错了什么?谢谢

4

1 回答 1

1

你所做的有点奇怪,因为你在当前一个(类型)中设置了新centerViewController的(类型),一旦完成,后一个将被释放,因为没有更多的引用。这可能会以某种方式导致黑屏。LoginViewControllerCenterViewController

一种解决方案是在LoginViewController外部使用MMDrawerController, 并始终在开头呈现它。如果没有令牌,则快速(没有动画)呈现MMDrawerController并且LoginViewController甚至不会被看到。如果用户注销,这种方式还允许您轻松地返回登录屏幕。

另一种选择是使用 以模态方式(或您真正喜欢的方式)显示您LoginViewController的信息,然后在他们登录时将其关闭。CenterViewControllerpresentViewController:animated:completion:

于 2019-02-11T22:31:04.460 回答