从 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中访问NavigationController指向的初始视图