ViewDidLoad 调用了两次
Posted
技术标签:
【中文标题】ViewDidLoad 调用了两次【英文标题】:ViewDidLoad Called two times 【发布时间】:2015-10-17 20:36:09 【问题描述】:用户成功登录后我的应用程序。我会调用 HOME 通知,之后在 HomeViewController 中调用 ViewDidLoad 两次。有人可以帮忙吗?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//-- Notification Observer
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HomeNotification:)name:@"HOME"object:nil];
return YES;
#pragma mark - Sidemenu & Home
- (void)HomeNotification:(NSNotification *) notification
UIStoryboard *sideMenuSB = [UIStoryboard storyboardWithName:SB_SideMenu bundle:[NSBundle mainBundle]];
SideMenuViewCntrl *sideMenuVC = [sideMenuSB instantiateViewControllerWithIdentifier:VC_SideMenu];
UIStoryboard *HomeSB = [UIStoryboard storyboardWithName:SB_Home bundle:[NSBundle mainBundle]];
HomeViewController *homeVC = [HomeSB instantiateViewControllerWithIdentifier:VC_Home];
UINavigationController *navigationController = [HomeSB instantiateViewControllerWithIdentifier:@"navigationController"];
MFSideMenuContainerViewController *container = nil;
if ([[notification name] isEqualToString:@"HOME"])
container = [MFSideMenuContainerViewController containerWithCenterViewController:homeVC leftMenuViewController:sideMenuVC rightMenuViewController:nil];
Adding view to window will call viewdidload multiple times?
[container setLeftMenuViewController:sideMenuVC];
[container setCenterViewController:navigationController];
self.window.backgroundColor = [UIColor blackColor];
self.window.rootViewController = container;
[self.window makeKeyAndVisible];
【问题讨论】:
您可能正在创建 2 个 HomeViewController 实例。第二个可以通过侧边菜单或导航创建。此外,当您在 HomeScreenViewController 的 viewDidLoad 中放置断点并在控制台中“po self”时,您会得到什么?您是否两次得到相同的描述? 是的。我得到这个两次。如何解决这个问题? 【参考方案1】:我在 SideMenu 容器中添加了两次 Home 和侧边菜单视图控制器。
container = [MFSideMenuContainerViewController containerWithCenterViewController:homeVC leftMenuViewController:sideMenuVC rightMenuViewController:nil];
一旦我删除了下面的代码,它现在可以正常工作了......
[container setLeftMenuViewController:sideMenuVC];
[container setCenterViewController:navigationController];
【讨论】:
以上是关于ViewDidLoad 调用了两次的主要内容,如果未能解决你的问题,请参考以下文章
NSNotificationCenter 通知在滑动时触发了两次
didUpdateToLocation 调用了两次,好的。为啥 oldLocation 两次都为零?