好的,如果您在理解标题时遇到问题,这就是问题所在。我在这里使用这个库,它由IIViewDeckController
.
我用简单的 left 和 center 初始化它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
另一个方法:UIViewController
addChildViewController
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
as a时,不会调用我在 中的事件。但它被称为!现在,当我不使用并仅添加窗口时,我确实得到了事件......rootViewController
viewWillAppear
FTTileViewController
FTPhoneHomeViewController
IIViewDeckController
FTPhoneHomeViewController
rootViewController
FTTileViewController
viewWillAppear
也许这是一个错误,IIViewDeckController
我也应该在那里发布。但我看不出我在这里做错了什么。有人对此有任何想法吗?
如果有人可以检查我的一般假设UIViewControllers
:
添加childViewControllers
到另一个UIViewController
不是将视图循环方法(如viewWillAppear
)传递到另一个UIViewController's
视图的要求。当您使用该方法添加另一个UIViewController's
视图时,将传递这些事件。addSubview
但是,例如,您使用这些addChildViewController
方法来获取旋转事件并viewController's
通过您的应用程序维护层次结构。