gpt4 book ai didi

ios - 未调用 IIViewDeckController 的中心 viewController 的 childViewController 上的 viewWillAppear

转载 作者:行者123 更新时间:2023-11-28 22:27:54 24 4
gpt4 key购买 nike

如果您在理解标题时遇到问题,那么问题就来了。我正在使用 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 中,我使用 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 管理一堆图 block ,从架构的角度来看,这个逻辑最好包含在它自己单独的 UIViewController 中。

当我使用 IIViewDeckController 作为窗口中的 rootViewController 时,我在 FTTileViewController 中的 viewWillAppear 事件是没有叫。但它是在 FTPhoneHomeViewController 中调用的!现在,当我不使用 IIViewDeckController 而只是将 FTPhoneHomeViewController 添加为窗口的 rootViewController 时,我的 FTTileViewController 确实获得了 viewWillAppear 事件...

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

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

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

最佳答案

好的回答我自己的问题:

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

- (BOOL)shouldAutomaticallyForwardRotationMethods {
return YES;
}

- (BOOL)shouldAutomaticallyForwardAppearanceMethods {
return YES;
}

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return YES;
}

全部返回 YES,它应该可以工作。如果 IIViewDeckController 上没有此 View 包含的属性,也许最好添加它?

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com