A界面为登录选项界面,B界面为登录界面,C界面为登录后界面
没登录的话为A主控制器(keyWindow.rootViewController),也就是没登录之前的进入界面。
需要present到B界面,然后点击登录后换C为主控制器。
然后就遇到问题了,点击登录后换C为主控制器,但是A控制器还是存在,没有被释放,找了好久文章(设置rootViewController了,remove了,都没卵用)最后终于找到一篇文章,解决了分享给大家
https://www.jianshu.com/p/ac4aebdc74d4
- (void)loginButtonClick:(UIButton *)sender { //点击登录按钮触发的方法
[self dismissViewControllerAnimated:NO completion:^{ //这个为dismiss后换主控制器 我也不是太了解 但是这个方法可以
JHRootViewController *rootVC = [[JHRootViewController alloc] init];
[UIApplication sharedApplication].keyWindow.rootViewController = rootVC;
}]; //防止window没销毁 造成内存泄露
[[JHCheckUserInfo shareCheckUserInfoManager] saveLoginInfo]; //保存登录信息
[[JHControllerManager ShareManager] postNotification:ControllerManagerChangeToHomeNotification userInfo:nil];//通知要到登录后的首页了
}
((- (void)receiveNotificatHome:(NSNotification *)notification
{
if ([[notification name] isEqualToString:ControllerManagerChangeToHomeNotification]) {
JHRootViewController * rv = [[JHRootViewController alloc]init];
[UIApplication sharedApplication].keyWindow.rootViewController = rv;
}
})) 双括号内为通知要做的事情 设置主控制器