好的,如果您在理解标题时遇到问题,这就是问题。
我在这里使用this库,它由IIViewDeckController表示。

我用简单的左居中UIViewControllers初始化它:

FTPhoneHomeViewController *home = [[FTPhoneHomeViewController alloc] init];
FTPhoneSideViewController *side = [[FTPhoneSideViewController alloc] init];

IIViewDeckController *vdc = [[IIViewDeckController alloc] initWithCenterViewController:home leftViewController:side];
[self.delegate changeRootViewController:vdc];


FTPhoneHomeViewControllerFTPhoneSideViewController只是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用作rootViewController时,未调用viewWillAppear中的FTTileViewController事件。但这在FTPhoneHomeViewController中称为!现在,当我不使用IIViewDeckController而只是将FTPhoneHomeViewController添加为窗口的rootViewController时,我的FTTileViewController确实会得到viewWillAppear事件...

也许这是IIViewDeckController的错误,我也应该将其发布在这里。但是我看不到我在做什么错。有人对此有任何想法吗?

如果有人可以检查我关于UIViewControllers的一般假设:

childViewControllers添加到另一个UIViewController并不是将视图循环方法(例如viewWillAppear)传递到另一个UIViewController's视图的必要条件。当您使用UIViewController's方法添加另一个addSubview视图时,将传递这些事件。但是,例如,您使用addChildViewController方法来获取旋转事件并通过应用程序维护viewController's层次结构。

最佳答案

可以回答我自己的问题:

IIViewDeckController中,您可以调整一些方法:

- (BOOL)shouldAutomaticallyForwardRotationMethods {
    return YES;
}

- (BOOL)shouldAutomaticallyForwardAppearanceMethods {
    return YES;
}

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
    return YES;
}


从所有人都返回YES,它应该可以工作。
如果IIViewDeckController上的该视图包含项没有属性,则添加它可能很好吗?

关于ios - 从未调用IIViewDeckController的中心viewController出现在childViewController上的viewWillApp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18397636/

10-10 08:05