2013-05-20 59 views
4

我正在关注Apple's guide来构建自己的自定义容器视图控制器。它看起来工作得很好,除了一个令人烦恼的问题。中继外观方法正确调用自定义容器视图控制器

我该如何指定我的子视图控制器在哪个时间将收到viewWillAppear:viewDidAppear:调用(及其对应的disappear)?

比方说,我有一个幻想的孩子滑入父母或类似的动画。很自然,我想在动画开始时调用viewWillAppear:YES,并在结束时调用viewDidAppear:YES。但是,默认情况下,在将孩子的视图添加到家长的视图中时,同时调用viewWillAppear:NOviewDidAppear:NO

现在,我知道有beginAppearanceTransition:animated:endAppearanceTransition方法,在iOS 6中添加的,但我想支持的iOS 5,它也好像他们是为了在先进的情况下使用:

一旦将一个孩子添加到一个容器中,一旦事件发生需要消息被转发, 会自动将旋转和外观回调转发给子视图 控制器。这通常是您想要的行为,因为它确保 所有事件都已正确发送。但是,有时默认的 行为可能会按照您的容器的 没有意义的顺序发送这些事件。例如,如果多个子项同时更改其视图状态,则可能需要合并所有更改,以便 外观回调全部同时发生在更多 逻辑顺序中。要做到这一点,您需要修改您的容器类别,以承担外观或旋转回调的责任 。

还有transitionFromViewController:toViewController:duration:options:animations:completion:方法,在适当的时候调用外观的方法,但它需要在动作二视图控制器,一般在这里看出来的地方。当然,我可以做的伎俩,喂它一个虚拟的孩子,但严重...

有什么我失踪?任何帮助将不胜感激。

回答

3

答案很有趣。

文档可能会说beginAppearanceTransition:animated:endAppearanceTransition在iOS 6+中可用,但事实并非如此。这些方法就好了iOS 5中以及使用方法:

- (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
- (void)endAppearanceTransition __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 

This question's answer也指出了同样的事情。案件解决了!

相关问题