来自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'“。

+0

显示'ViewController.h' – 2014-09-12 13:12:52

因此,错误意味着它无法找到方法名称(选择器),在类ViewController

确保在您的ViewController标题中您已声明alterTime方法,并将其公开化。

如果顺利,再仔细检查,以确保您的rootViewController的类型(母公司)ViewController

+0

非常感谢。这次我的疏忽真让我失望。 – Krekin 2014-09-13 14:35:57

+0

没有任何问题:)发生 – 2014-09-13 19:13:30

ViewController.h文件中声明- (void)alterTime

@interface ViewController : UIViewController 

- (void)alterTime; 

@end 
+0

啧,我的注意力不集中将是我的终点。我没有看到我的自我感到尴尬。非常感谢你。 – Krekin 2014-09-13 14:35:20