问题viewWillAppear,viewDidAppear,viewWillDisappear和viewDidDisappeart没有被调用。
原因是这个UIViewController需要添加到[UIApplication sharedApplication].keyWindow才会被调用。那如何满足需要那些被push进去的UIViewController的viewWillAppear和viewDidAppear的调用呢。
1.添加代理
@interface landpokerViewController : UIViewController <UINavigationControllerDelegate>
{
UINavigationController* _gamePageManage;
}
LoginViewController* login = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
_gamePageManage = [[UINavigationController alloc] initWithRootViewController:login];
[login release];
_gamePageManage.delegate = self;
[self.view addSubview:_gamePageManage.view];
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController viewWillAppear:animated];
}
- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController viewDidAppear:animated];
}
以上方面解决了viewWillAppear,viewDidAppear,但是没有解决viewWillDisappear和viewDidDisappeart。
如果要彻底这个问题,使用以下代码
在didFinishLaunchingWithOptions把UINavigationController的view直接加到window上,不要间接的加到其他View上。
if (!_gamePageManage)
{
//栈顶
LoginViewController* login = [[LoginViewController alloc] initWithNibName:@"LoginVie
_gamePageManage = [[UINavigationController alloc] initWithRootViewController:login];
[PageManage sharePageManage].navigation = _gamePageManage;
[login release];
[window addSubview:_gamePageManage.view];
}
[window makeKeyAndVisible];