viewControllerWithRestorationIdentifierPath:coder:
上的文档说:
您对此方法的实现应创建(或查找) 相应的视图控制器对象并返回它...并非总是如此 在你的中创建一个新的视图控制器对象是必要的 实现这种方法。您还可以返回现有视图 由另一种方法创建的控制器对象。例如, if 视图控制器已从故事板文件加载, 你会返回该对象而不是创建一个新对象。 [我的斜体。]
这对我来说似乎完全是胡说八道。 这是一个类方法!我们目前没有任何访问任何实例的权限 - 除非我们创建一个实例。如果有人能向我解释一个类方法如何找到或知道“已经从故事板文件中加载的视图控制器”,我将不胜感激。
编辑:要获得赏金,您必须向我展示一个实际案例,从您自己的应用程序中,用于“返回现有视图控制器对象的类方法viewControllerWithRestorationIdentifierPath:coder:
通过另一种方式创造。“
答案 0 :(得分:2)
我能想到的最常见的例子是App Delegate拥有的任何视图控制器。传统上,这是传统应用程序中的标签栏控制器或导航控制器,但有时它可能是完全自定义的,这可能是有用的。
由于UIApplication
几乎是一个单独的并且有一个委托,这意味着你的App Delegate具有全局状态,这使得它可以从任何地方访问,包括在[[UIApplication sharedApplication] delegate]
的类方法中。
当然,任何单例都可以从任何地方访问,一个常见的模式(但我个人不喜欢)是一个NavigationManager
单例管理任何全局视图控制器转换,所以在在这种情况下,您也可以访问现有实例。