来自AppDelegate的UIViewController方法
这是我在stackoverflow.com的第一个问题。 我想从AppDelegate.m中的ViewController.m调用一个方法[ - (void)alterTime]。是的,我在AppDelegate.h中有#imported“ViewController.h”。将控制器导入AppDelegate.m没有区别。此外,“背景获取”处于打开状态。来自AppDelegate的UIViewController方法
这里是内部AppDelegate.m的代码,我想实现:
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
{
NSLog(@"Current Time Altered");
//Get current view controller
ViewController *mainViewController = (ViewController *)self.window.rootViewController;
[mainViewController alterTime];
//Cleanup
completionHandler(UIBackgroundFetchResultNewData);
}
这是一段代码给我的问题:
[mainViewController alterTime];
它指出:“无可见'ViewController'的@interface声明选择器'alterTime'“。
因此,错误意味着它无法找到方法名称(选择器),在类ViewController
。
确保在您的ViewController
标题中您已声明alterTime
方法,并将其公开化。
如果顺利,再仔细检查,以确保您的rootViewController
的类型(母公司)ViewController
非常感谢。这次我的疏忽真让我失望。 – Krekin 2014-09-13 14:35:57
没有任何问题:)发生 – 2014-09-13 19:13:30
在ViewController.h
文件中声明- (void)alterTime
。
@interface ViewController : UIViewController
- (void)alterTime;
@end
啧,我的注意力不集中将是我的终点。我没有看到我的自我感到尴尬。非常感谢你。 – Krekin 2014-09-13 14:35:20
显示'ViewController.h' – 2014-09-12 13:12:52