gpt4 book ai didi

iOS MMDrawerController objective-c 登录 View Controller

转载 作者:行者123 更新时间:2023-11-28 23:37:06 24 4
gpt4 key购买 nike

我开始研究 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 上没有保存 token ,我必须显示 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 (类型 LoginViewController )在当前一个(类型 CenterViewController )中,一旦完成,后一个将被释放,因为没有更多的引用。这可能以某种方式导致黑屏。

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

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

关于iOS MMDrawerController objective-c 登录 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54639270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com