好的,如果你不理解标题的话,这就是问题所在。这里我使用的是这库,它由IIViewDeckController表示。
我用简单的左和中间的UIViewControllers插入它:
FTPhoneHomeViewController *home = [[FTPhoneHomeViewController alloc] init];
FTPhoneSideViewController *side = [[FTPhoneSideViewController alloc] init];
IIViewDeckController *vdc = [[IIViewDeckController alloc] initWithCenterViewController:home leftViewController:side];
[self.delegate changeRootViewController:vdc];FTPhoneHomeViewController和FTPhoneSideViewController只是UIViewController的子类。最后一行从窗口中移除当前的rootViewController并添加IIViewDeckController。
现在,在FTPhoneHomeViewController中,我使用addChildViewController方法添加了另一个UIViewController:
FTTileViewController *tileViewController = [[FTTileViewController alloc] initWithFrame:CGRectMake(5.0, 50.0, 469.0, 310) tileData:[FTTileFaker prepareTileData] defaultTileConfig:[FTTileFaker prepareTileConfigs][0] andTileConfigs:[FTTileFaker prepareTileConfigs]];
tileViewController.tileSpacing = 9.0;
[self addChildViewController:tileViewController];
[self.view addSubview:tileViewController.view];
[tileViewController didMoveToParentViewController:self];我这么做是因为这个FTTileViewController管理着一堆瓷砖,从体系结构的角度来看,这个逻辑最好包含在它自己独立的UIViewController中。
当我从窗口使用IIViewDeckController作为rootViewController时,不会调用FTTileViewController中的viewWillAppear事件。但是它在FTPhoneHomeViewController中被称为!现在,当我不使用IIViewDeckController并将FTPhoneHomeViewController添加为窗口的rootViewController时,FTTileViewController就会得到viewWillAppear事件.
也许这是IIViewDeckController的一个bug,我也应该把它发到那里。但我没看到我做错了什么。有人对此有想法吗?
如果有人能核实一下我对UIViewControllers的总体假设:
将childViewControllers添加到另一个UIViewController并不是将视图循环方法(如viewWillAppear)传递到另一个UIViewController's视图的必要条件。当您使用UIViewController's方法添加另一个addSubview视图时,将传递这些事件。但是,您可以使用addChildViewController方法来获取旋转事件,并通过应用程序维护viewController's层次结构。
发布于 2013-08-23 08:26:40
好的,问我自己的问题:
在IIViewDeckController中,有一些可以调整的方法:
- (BOOL)shouldAutomaticallyForwardRotationMethods {
return YES;
}
- (BOOL)shouldAutomaticallyForwardAppearanceMethods {
return YES;
}
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return YES;
}从所有的人中返回是的,这应该是有效的。如果在IIViewDeckController上没有此视图包含的属性,那么添加它可能更好吗?
https://stackoverflow.com/questions/18397636
复制相似问题