从应用程序委托访问顶视图控制器

时间:2013-05-14 04:28:24

标签: ios cocoa-touch uiviewcontroller appdelegate

我需要我的AppDelegate能够获得指向我当前显示的视图控制器的指针(已经探索visibleViewController导航视图,但更通用的版本会更好)并从我的对象实例中读取状态在applicationWillResignActive中使用。

我对此的尝试让我初始化了新对象,而这些对象只是空的。我在运行时的任何一点都需要对象的状态。

我想我可以创建一个与我的对象平行的单例类,我可以从应用代表调用它,但这看起来很笨拙和冗长。我还想过让视图控制器成为AppDelegate的委托,但这看起来更糟糕。

我知道我可能忽略了显而易见的事情,但我必须措辞错误,因为我无法明白。我已经搜索了Stack Overflow 10分钟,并浏览了视图控制器和appdelegate文档。

如何在运行时从app delegate访问对象的属性值?

1 个答案:

答案 0 :(得分:2)

具体取决于您的视图控制器的确切操作以及您希望应用在重新打开时恢复其状态的方式,AppDelegate应尽量少参与。

相反,您应该考虑使用适当的视图控制器观察UIApplicationWillResignActiveNotification通知,并且每个通知都执行自己的状态存储。当应用程序重新打开时,AppDelegate只恢复根视图控制器,然后根VC检查是否需要恢复任何内容,并在链中打开,直到恢复所有数据。这使得所有逻辑和数据存储都保持模块化和隔离。

如果你真的:

  

在运行时的任何时候都需要对象的状态

然后你有一个不同的设计问题,你需要分解。 AppDelegate应该用于特定任务,它可以在applicationWillResignActive中发挥作用,但该角色不应该是管理100%需要完成的工作。