VC中viewWillAppear方法走了俩次

问题描述

我的app的登录页面是模态出来一个VC app退出登录后重新登录重新新切换window.rootViewController

但是发现tab的第一个子VC中的viewWillAppear方法走了俩遍

我自己也找到了原因了

第一遍走是因为我调用dismissViewController
第二遍走势因为我调用了appDelegate.window.rootViewController = tabVC;

但是不知道应该如何解决这个问题 希望大神指导一二

相关代码

[self dismissViewControllerAnimated:YES completion:^{
AppDelegate appDelegate = (AppDelegate )[[UIApplication sharedApplication] delegate];
appDelegate.window.rootViewController = tabVC;
}];

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.9k
2 个回答

根据内容,我猜测你在弹出 loginVC 时,没有销毁 tabVC,并且,在登录成功重新展示时,又创建了一个新的。

第一遍:
点击退出登录,直接在 tabVC present loginVC,此时 dismiss loginVC,会触发 tabVC 的 viewWillAppear。
第二遍:
tabVC 应该是新创建的,此时设置 rootViewController,会触发新的 tabVC 的 viewWillAppear,由于是一个 vc,导致你认为走了两遍。

新手上路,请多包涵

dismissViewController为什么会走viewWillAppear,这么奇怪

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题