为什么viewWillAppear:在我的视图控制器最初显示时调用了两次?

时间:2014-07-09 13:42:52

标签: ios ecslidingviewcontroller

我有一个带有侧汉堡菜单的iOS 7应用程序和一个显示内容的主表视图控制器。每当用户选择侧面菜单中的项目时,我都隐藏了侧面菜单,我想在主视图控制器中重新加载数据。我最初的想法是将我的数据刷新代码放在我的主视图控制器中viewWillAppear

但是当我在viewWillAppear:中设置断点时,我会在视图控制器最初显示时收到2个调用,一个来自UIViewController本身,另一个来自[ECSlidingViewController viewWillAppear:],其中以下行似乎再次拨打我的viewWillAppear:

[self.topViewController beginAppearanceTransition:YES animated:animated];

另一方面,当我显示左侧菜单然后隐藏它时,我的视图控制器viewWillAppear:这次没有被调用,所以在我的情况下数据不会被刷新。

我的配置中是否遗漏了某些内容?这是一个错误还是一个功能?我应该如何使用它?

PS:我曾经使用IIViewDeckController并且我遇到了完全相同的问题,因此我切换到ECSlidingViewController,因为它说"您的视图控制器将获得适当的视图生命周期和在合适的时间轮换方法。"。

1 个答案:

答案 0 :(得分:0)

事实上,我设法用另一个库做了我想做的事:https://github.com/romaonthego/RESideMenu

我必须实现委托方法,以便在显示或隐藏菜单时在我的视图控制器上调用生命周期方法:

- (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController {
    [sideMenu.contentViewController viewWillDisappear:YES];
}

- (void)sideMenu:(RESideMenu *)sideMenu didShowMenuViewController:(UIViewController *)menuViewController {
    [sideMenu.contentViewController viewDidDisappear:YES];
}

- (void)sideMenu:(RESideMenu *)sideMenu willHideMenuViewController:(UIViewController *)menuViewController {
    [sideMenu.contentViewController viewWillAppear:YES];
}

- (void)sideMenu:(RESideMenu *)sideMenu didHideMenuViewController:(UIViewController *)menuViewController {
    [sideMenu.contentViewController viewDidAppear:YES];
}

最初没有调用viewWillAppear两次。