gpt4 book ai didi

iphone - 何时使用 addChildViewController 与 PushViewController

转载 作者:行者123 更新时间:2023-12-03 18:14:45 25 4
gpt4 key购买 nike

我刚刚观看了 2011 年 WWDC 上有关“实现 UIViewController Containment”的演示 ( here's a link to the video )

他们提到了将 viewController 添加到屏幕的两种方法,我希望能对最佳实践进行一些澄清...

addChildViewController/removeFromParentViewController
与@property(非原子,只读)NSArray *childViewControllers和[selftransitionFromViewController:currentView toViewController:nextView持续时间:options:animations:completion:];

一起使用

pushViewController:animated:/popViewControllerAnimated
他们在演示中很快就跳过了这一点

在我的应用程序中,我使用所有自定义 View Controller ,直到今天我一直使用以下方式管理它们:

[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];

但我现在明白这是不好的做法,我想知道使用“addChildViewController”的正确方法是什么以及使用“pushViewController”的正确方法是什么?

我非常感谢您对此事的想法!

最佳答案

是的,pushViewController:用于管理一堆 View Controller 的导航 Controller 。 addChildViewController: 另一方面是 iOS 5 称为“ View Controller 包含”功能的一部分。

这背后的基本思想是,您可以将 View Controller 嵌入到您自己的其他 View Controller 中(例如,当将 iPhone 应用程序移植到 iPad 时),从而轻松地实现您自己的导航 Controller 、分割 View Controller 等功能等等

像您展示的那样的实现的一个问题是您只处理 View 。 View Controller 事件(例如方向更改)将无法正确地沿层次结构传递。 View Controller 包含尝试确保所有包含的 View Controller 也将获得适当的消息。

在查看您的实现时,您还应该考虑您真正想通过此实现什么。导航 Controller 可能是正确的选择,或者您甚至可能以模态方式显示下一个 Controller (请参阅 https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/PresentingaViewController.html )使用这些方法(例如导航 Controller 和模态视图)时的好处是用户已经熟悉这些导航技术。

无论如何https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/是一本关于如何在 View Controller 之间转换的好读物。

当使用 View Controller 包含时,您基本上必须像往常一样将 View 添加到包含 View 中(即使添加了 Controller 也必须这样做)。然后使用 addChildViewController: 将 subview Controller 添加到周围的 View Controller 中。您还必须通过 didMoveToParentViewController: 通知子 Controller 它已被放入另一个 Controller 中。您还可以使用 transitionFromViewController:toViewController: 将一个 View Controller 交换为另一个 View Controller ,并可选择提供动画。

关于iphone - 何时使用 addChildViewController 与 PushViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084050/

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