来自AppDelegate的UIViewController方法

时间:2014-09-12 13:09:15

标签: objective-c methods uiviewcontroller appdelegate

这是我在stackoverflow.com上的第一个问题。 我试图从AppDelegate.m中的ViewController.m调用一个方法[ - (void)alterTime]。是的,我有#imported" ViewController.h"在AppDelegate.h中。将控制器导入AppDelegate.m没有任何区别。此外,"背景提取"是开。

以下是我试图实施的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];

它声明:"没有可见的@interface用于' ViewController'声明选择器' alterTime'"。

2 个答案:

答案 0 :(得分:0)

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

@interface ViewController : UIViewController

- (void)alterTime;

@end

答案 1 :(得分:0)

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

确保在ViewController标题中确认了alterTime方法,并将其公之于众。

如果可以,请仔细检查以确保您的rootViewController属于ViewController的<{1}}