我有一个A类声明了一个初始化函数,如下所示。这是从AppDelegate applicationDidBecomeActive
调用的。
现在,当应用程序进入后台时,我正在捕获用户的当前位置。当应用程序到达前台时,我获得新位置,如果用户移动了超过给定距离,我想再次调用初始化,弹出mainviewcontroller
并重新计算数据。
我在第mvc = ...
行中遇到异常。如果我将“应用程序不在后台运行”设置为YES
,则初始化将被调用而没有问题(如果我根据距离删除调用初始化)。任何帮助将不胜感激!
例外是:
[_UIModalItemAppViewController viewControllers]: unrecognized selector sent to instance
我有:
....
UINavigationController *n ;
MainViewController *mvc;
....
....
+(void)refetch
{
static BOOL initialized = NO;
n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
mvc = (MainViewController *)[n viewControllers][0];
if (!initialized)
{
initialized = YES;
calculatedValuesArray = [[NSMutableArray alloc] init];
[self updateLocation];
[self fetchData];
}
}
答案 0 :(得分:1)
似乎keyWindow
不是您期望的窗口,它包含私有视图层次结构。请尝试使用app delegate的窗口:[UIApplication sharedApplication].delegate.window
。
答案 1 :(得分:-1)
问题出在这里:
n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
mvc = (MainViewController *)[n viewControllers][0];
变量n
没有ivar viewControllers
。