10

上的文档viewControllerWithRestorationIdentifierPath:coder:说:

您的此方法的实现应该创建(或找到)相应的视图控制器对象并将其返回......在您的此方法的实现中并不总是需要创建一个新的视图控制器对象。您还可以返回由其他方式创建的现有视图控制器对象。例如,如果视图控制器已经从情节提要文件中加载,您将返回该对象而不是创建一个新对象。[我的斜体。]

对我来说,这似乎完全是胡说八道。这是一个类方法!目前我们无权访问任何实例——除非我们创建一个。如果有人能向我解释一个类方法究竟如何找到或了解“已经从情节提要文件中加载的视图控制器”,我将不胜感激。

编辑:要获得赏金,您必须从您自己的应用程序中向我展示一个实际案例,该类方法viewControllerWithRestorationIdentifierPath:coder:用于“返回由另一种方式创建的现有视图控制器对象”。

4

1 回答 1

2

我能想到的最常见的例子是 App Delegate 拥有的任何视图控制器。这通常是传统应用程序中的选项卡栏控制器或导航控制器,但有时它可以是完全自定义的东西,此时此功能可能有用。

由于UIApplication几乎是一个单例并且有一个委托,这意味着您的 App Delegate 具有全局状态,这使得它可以从任何地方访问,包括在类方法中[[UIApplication sharedApplication] delegate]

当然,任何单例都可以从任何地方访问,一个常见的模式(但我个人不喜欢)是拥有一个NavigationManager管理任何全局视图控制器转换的单例,因此在这种情况下,您也可以访问现有实例。

于 2013-09-02T23:55:27.780 回答