[英]iOS MMDrawerController objective-c login view controller
我开始研究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
上隐藏。
我试图切换到CenterViewController
内部的LoginViewController:
- (void)viewDidLoad {
[super viewDidLoad];
LoginViewController * vc = [[LoginViewController alloc] init];
AppDelegate *app = [[UIApplication sharedApplication] delegate];
[app.drawerController setCenterViewController:vc withCloseAnimation:YES completion:nil];
}
但是我只有黑屏。 我做错了什么? 谢谢
您正在执行的操作有点怪异,因为您正在当前( CenterViewController
类型)中设置新的centerViewController
(类型LoginViewController
),并且一旦完成,将取消分配后者,因为没有更多引用了。 这可能会导致黑屏。
一种解决方案是将LoginViewController
放在MMDrawerController
之外,并始终在开始时显示它。 如果没有令牌,则快速(不带动画)显示MMDrawerController
,甚至看不到LoginViewController
。 如果用户注销,这种方式还可以让您轻松地退出登录屏幕。
另一个选择是使用presentViewController:animated:completion:
以模态方式(或您确实喜欢)从CenterViewController
呈现LoginViewController
,然后在他们登录时将其关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.