首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从非调用的viewWillAppear的中心viewController到childViewController上的IIViewDeckController

从非调用的viewWillAppear的中心viewController到childViewController上的IIViewDeckController
EN

Stack Overflow用户
提问于 2013-08-23 07:54:43
回答 1查看 1.1K关注 0票数 0

好的,如果你不理解标题的话,这就是问题所在。这里我使用的是库,它由IIViewDeckController表示。

我用简单的左和中间的UIViewControllers插入它:

代码语言:javascript
复制
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

代码语言:javascript
复制
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层次结构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-23 08:26:40

好的,问我自己的问题:

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

代码语言:javascript
复制
- (BOOL)shouldAutomaticallyForwardRotationMethods {
    return YES;
}

- (BOOL)shouldAutomaticallyForwardAppearanceMethods {
    return YES;
}

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
    return YES;
}

从所有的人中返回是的,这应该是有效的。如果在IIViewDeckController上没有此视图包含的属性,那么添加它可能更好吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18397636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档