从 AppDelegate 访问当前视图

Posted

技术标签:

【中文标题】从 AppDelegate 访问当前视图【英文标题】:Access current view from AppDelegate 【发布时间】:2013-09-09 21:45:09 【问题描述】:

我正在尝试从我的 App Delegate 访问当前视图。在我的应用程序委托中有一个定时事件,它每 30 秒访问一次远程服务器。如果它发现需要更新当前数据,我需要它在当前视图上显示进度显示“请稍候”模式弹出窗口。

我想使用 DejalActivityView 在当前活动视图上显示“请稍候”窗口,但是它需要当前活动视图作为输入参数,我无法从 App Delegate 中找到方法。

Self.Window.RootViewController 返回 Null,我无法从委托中找到当前视图或 UIViewController。

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

您需要使用不同的架构,例如通知,而不是这样做。

在您要执行此操作的 AppDelegate 中,将其替换为:

[[NSNotificationCenter defaultCenter] postNotificationName:@"showPleaseWaitAlert" object:nil];

然后,在视图控制器中实现这样的方法:

-(void)showPleaseWait 
  //Show your dialog here

然后,在viewDidLoad 之类的方法中,执行以下操作:

[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showPleaseWait) name:@"showPleaseWaitAlert" object:nil]

【讨论】:

啊哈!谢谢你,最近从 ASP.Net 来到 ios 开发,我的理解仍然缺乏。我非常感谢这种对“一般方法”的解释。你,我的朋友,真棒。非常感谢! @CraigMoore:谢谢!总是乐于提供帮助。 iOS 开发与其他开发完全不同。需要一点时间来适应。

以上是关于从 AppDelegate 访问当前视图的主要内容,如果未能解决你的问题,请参考以下文章

来自 AppDelegate 的当前 viewController 崩溃/空屏

appdelegate 共享实例委托

从AppDelegate中访问NavigationController指向的初始视图

使用多个视图从 appdelegate 访问值时遇到问题

我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?

AppDelegate Swift 中的选项卡式应用程序和核心数据函数